![]() |
unklares verhalten einer stored proc in Firebird
Hi
also, folgender ausdruck liefert bei einer konkreten variablenbelegung ein ergebniss:
SQL-Code:
Die folgende StoredProc gibt aber <null> zurück,obwohl sie doch zu dem obigen ausdruck identisch ist. Hilfe,ich versteh das nich!!
select sum(R_ANZ * R_EPREIS) from RECHNUNG R, MAIN M /*die negativen*/
where (M.stelle = R.Stelle) and (M.id = R.bereich) and (M.calc = 0) and (R.stelle like '%'||:stelle||'%') and (r.bereich < :zeile) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)= :Monat)
SQL-Code:
CREATE PROCEDURE SUM_ZEILE_BER (
STELLE CHAR(9), JAHR INTEGER, ZEILE INTEGER, MONAT INTEGER) RETURNS ( ERGEBNIS NUMERIC(9,2)) AS DECLARE VARIABLE DIF1 NUMERIC(9,2) = 1; begin select sum(R_ANZ * R_EPREIS) from RECHNUNG R, MAIN M /*die negativen*/ where (M.stelle = R.Stelle) and (M.id = R.bereich) and (M.calc = 0) and (R.stelle like '%'||:stelle||'%') and (r.bereich < :zeile) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)= :Monat) into :dif1; ergebnis = :dif1; suspend; end |
Re: unklares verhalten einer stored proc in Firebird
Hi,
änder die SP so ab:
SQL-Code:
CREATE PROCEDURE SUM_ZEILE_BER (
STELLE CHAR(9), JAHR INTEGER, ZEILE INTEGER, MONAT INTEGER) RETURNS ( ERGEBNIS NUMERIC(9,2)) AS DECLARE VARIABLE DIF1 NUMERIC(9,2) = 1; begin FOR select sum(R_ANZ * R_EPREIS) from RECHNUNG R, MAIN M /*die negativen*/ where (M.stelle = R.Stelle) and (M.id = R.bereich) and (M.calc = 0) and (R.stelle like '%'||:stelle||'%') and (r.bereich < :zeile) and (EXTRACT(YEAR from R.R_Datum) = :Jahr) and (EXTRACT(MONTH from R.R_Datum)= :Monat) into :dif1; ergebnis = :dif1 DO suspend; end Wenn Du willst, dass ne SP nen Wert uzrückliefert, brauchst Du meines WIssens immer ne For-DO-Suspend/Exit Schleife, auch wenn nur ein Wert zurückkommen soll. Grüße Lemmy |
Re: unklares verhalten einer stored proc in Firebird
Hallo Lemmy,
Zitat:
Diese funktioniert z.B.:
SQL-Code:
mit der Abfrage:
CREATE PROCEDURE "OhneFor"
RETURNS ( "Erg" NUMERIC(15,2)) AS begin select SUM(S3) FROM "TestComp" into :"Erg"; suspend; end
SQL-Code:
SELECT "Erg" from "OhneFor"
|
Re: unklares verhalten einer stored proc in Firebird
Zitat:
in einem select statement oder als echte SP? insbesonder bei subselects und unions hatte ich mit Parametern öfters Schwierigkeiten mit interbase und firebird. Hast du deine SP mal mit IBexpert getestet? Funzt es da auch nicht? |
Re: unklares verhalten einer stored proc in Firebird
ja, ich rufe sie mit select auf. im IB expert geht sie auch nicht. erst wenn ich sie direkt im SQL Tool ausführe geht es...komische sache das...
|
Re: unklares verhalten einer stored proc in Firebird
Zitat:
SQL Editor im IBexpert? |
Re: unklares verhalten einer stored proc in Firebird
ja, das meinte ich
|
Re: unklares verhalten einer stored proc in Firebird
ich vermute mal, dass es an den parametern liegt.
Versuch doch mal deine variablen durch konkrete Werte zu ersetzen. nochwas: was benutzt du für eine FB Version? |
Re: unklares verhalten einer stored proc in Firebird
firebird 1.5
Das komische: wenn ich konkrete werte in den "quelltext" schreibe gehts. HAb ich jedoch die variablen, erscheint ja sowohl beim ausführen der procedure als auch beim ausführen des code schnipsels im SQL Editor ein fenster,in dem ich die variablen belegen kann. Und da das phänomen: Im SQL editor gehts, als Prozedur nicht... |
Re: unklares verhalten einer stored proc in Firebird
Ich habe eine Anwendung mit etwa
400 Prozeduren und 1200 Triggern auf einer IB 6.0 laufen. Habe diese auf FB 1.5 RC8 umgestellt und habe viele Stellen im programm die nicht mehr funktionieren. Viele komplexe Queries (mit massig parametern) liefern einfach keine Ergebnisse mehr. Deshalb mußte ich viele parametrisierte Queries notwendigerweise ändern. Ich habe das so gemacht, dass ich vor aufruf der Queries meine Variablen einfach mit Stringreplace durch konkrete Werte ersetze. Das ist häßlich aber erfüllt seinen zweck. Bei RC9 ist laut doku auch noch keine besserung in sicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 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