![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBExpert
Stored Procedure Problem
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:
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
Query = ' Select Wert Fro Tabelle1'
if (Entscheidung = 0) then Query = Query || Where Schrank = :Lagerplatz' '; Query = Query || where ...'; execute Statement query into :Wert 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 |
AW: Stored Procedure Problem
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; |
AW: Stored Procedure Problem
Hallo,
nimm den Doppelpunkt beim Lagerplatz weg. Und das Execute Statement ist auch überflüssig. Ein Bsp. ![]() |
AW: Stored Procedure Problem
Zitat:
Dage geht leider nicht habe ich schon alles durch. Tanje |
AW: Stored Procedure Problem
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). |
AW: Stored Procedure Problem
Execute Statement ist die eine Ausnahme, Verwendung siehe hier:
![]() Query = Query || ' Where Schrank =' || :Lagerplatz; |
AW: Stored Procedure Problem
Zitat:
|
AW: Stored Procedure Problem
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. |
AW: Stored Procedure Problem
Man muss den string auch richtig zusammenbauen:
Code:
Frank
Query = 'Select Wert Fro Tabelle1';
if (Entscheidung = 0) then Query = Query||' Where Schrank = '''||:Lagerplatz||''''; |
AW: Stored Procedure Problem
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz