AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Stored Procedure Problem

Stored Procedure Problem

Ein Thema von Dumpfbacke · begonnen am 16. Mär 2021 · letzter Beitrag vom 16. Mär 2021
Antwort Antwort
Seite 1 von 2  1 2   
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
288 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Stored Procedure Problem

  Alt 16. Mär 2021, 09:10
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBExpert
Hallo an alle hier.
Hier möchte eine Stored Prodedure erstellen wo ich zwei verschieden Where Zeilen haben möchte welche je nach Parameter ausgewählt werden sollen.

Dieses versuche ich zu realisieren mittels (vereinfacht)

Die Paraneter sind Lagerplatz, Entscheidung

Delphi-Quellcode:
Query = ' Select Wert Fro Tabelle1'
if (Entscheidung = 0) then
Query = Query || Where Schrank = :Lagerplatz'
';
Query = Query || where ...';
execute Statement query into :Wert
Mein Problem ist wie bekomme ich den Paramter Lagerplatz in die Where Klausel rein ? So wie ich es beschrieben habe geht es leider nicht. Wenn ich den Lagerplatz als "normalen" Wert also nicht als Paraeter hinterlege geht es. also z.B. Where Lagerplatz = 21/2

Kann mir jemand sagen wie es hinbekommen kann ? Gerne auch einen komplett anderen Weg. Ich muss hier auf jeden Fall je nach Wert Entscheidung einen andere Where Bedingung setzten können.

Ach so der Fehler ist hier Colum unknown

Danke Tanja
Tanja

Geändert von Dumpfbacke (16. Mär 2021 um 09:13 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.293 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Stored Procedure Problem

  Alt 16. Mär 2021, 09:24
Servus Tanja,

ganz einfach: nicht als Stored Procedure machen. Das Execute Statement innerhalb einer SP macht div Vorteile von SP wieder zunichte. Und wenn es zwingend als SP gemacht werden soll, dann halt so:

Delphi-Quellcode:

if (Entscheidung = 0) then
begin
  Select Wert from Tabelle1 where Schrank = :Lagerplatz into :Wert;
end else
begin
  Selct WErt from Tabelle1 Where.....
end

SUSPEND;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.992 Beiträge
 
Delphi XE4 Professional
 
#3

AW: Stored Procedure Problem

  Alt 16. Mär 2021, 09:25
Hallo,
nimm den Doppelpunkt beim Lagerplatz weg.
Und das Execute Statement ist auch überflüssig.

Ein Bsp.
http://www.destructor.de/firebird/storedproc.htm
Heiko
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
288 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Stored Procedure Problem

  Alt 16. Mär 2021, 09:42
Hallo,
nimm den Doppelpunkt beim Lagerplatz weg.
Und das Execute Statement ist auch überflüssig.

Ein Bsp.
http://www.destructor.de/firebird/storedproc.htm
Nein as funktioniert leider nicht wenn man den Doppelpunkt dort weg nimmt. Das Execute ist auch notwendig denn man kann nicht mitteles einen If eine Wehre Bedingung setzten.
Dage geht leider nicht habe ich schon alles durch.

Tanje
Tanja
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.326 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Stored Procedure Problem

  Alt 16. Mär 2021, 09:56
Eine Stored Procedure wird bereits beim Erzeugen kompiliert und ist statisch.
Die Ablaufpläne für die einzelnen SQL innerhalb der Stored Procedure liegen fest und können zur Laufzeit nicht verändert werden.
Es ist nur möglich mit einem Parameter zwischen verschiedenen vorbereiteten SQL auszuwählen (wie von Lemmy vorgeschlagen).
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.326 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Stored Procedure Problem

  Alt 16. Mär 2021, 10:04
Execute Statement ist die eine Ausnahme, Verwendung siehe hier:

https://firebirdsql.org/refdocs/lang...-execstat.html


Query = Query || ' Where Schrank =' || :Lagerplatz;

Geändert von Blup (16. Mär 2021 um 10:11 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.795 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Stored Procedure Problem

  Alt 16. Mär 2021, 10:07
Execute Statement ist die eine Ausnahme, Verwendung siehe hier:

https://firebirdsql.org/refdocs/lang...-execstat.html
Dann verzichtet man aber auf den Vorteil einer SP.
Markus Kinzler

Geändert von mkinzler (16. Mär 2021 um 10:24 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
288 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Stored Procedure Problem

  Alt 16. Mär 2021, 10:15
OK Danke für die Info
genau das wollte ich vermeiden da ich hier 5 Paramter haben und die Stored nun schon ca. 50 Zeilen hat. Wenn man da etwas ändern muss ist es dann schon wteas schwiriger. Leider.

Danke noch mal an alle die mir hier geholfen haben.

Tanja.
Tanja
  Mit Zitat antworten Zitat
dataspider
Online

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.249 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Stored Procedure Problem

  Alt 16. Mär 2021, 10:34
Man muss den string auch richtig zusammenbauen:

Code:
Query = 'Select Wert Fro Tabelle1';
if (Entscheidung = 0) then
  Query = Query||' Where Schrank = '''||:Lagerplatz||'''';
Frank
Frank Reim
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
288 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Stored Procedure Problem

  Alt 16. Mär 2021, 10:35
Execute Statement ist die eine Ausnahme, Verwendung siehe hier:

https://firebirdsql.org/refdocs/lang...-execstat.html


Query = Query || ' Where Schrank =' || :Lagerplatz;
Funktionoert leider nicht hatte ich auch schon mal versucht
Tanja
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 15:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf