Autor Beitrag
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 18.10.02 16:46 
hallo leute

ich habe eine tabelle namens GAESTE in der es eine spalte mit namen GAESTE_KEY gibt.

Wenn ich nun folgende procedure erzeuge und ausführe

create procedure get_Prev_Guest_key(PASSED_CURR_KEY Integer)
returns
(PREV_KEY INTEGER)
as
declare Variable vKey INTEGER;
begin
select MAX(GAESTE_KEY) FROM GAESTE
WHERE GAESTE_KEY < :PASSED_CURR_KEY
Into :vKEY;
PREV_KEY = vKEY;
end
^

bekomme ich immer einen leeren rückgabe wert. Prev_Key ist also immer null. Doch wenn ich das select statement allein ausführe, also nicht in der stored procedure, klappt alles wunderbar.

Kann mir wer sagen, wo das problem liegt?

danke
Ken
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 18.10.02 18:06 
Hi
ich nehme mal an dass du die Procedure aufrufst bevor du einen neuen Datensatz anlegst. Wenn das so ist, würde ich zuerst mal die WHERE-Klausel in deiner Select-Anweisung weglassen. Das ist aber auch das Einzige was mir auffällt.
Mal angenommen der Parameter PAST_CURR_KEY wird nicht korrekt an die Procedure übergeben, würde die DB einen vergleich mit < NULL ausführen und der würde eben ein leeres Ergebnis liefern.
Probier doch mal mit dem SQL-Monitor zu kontrollieren, ob der Wert richtig übergeben wird. Ansonsten lass ihn einfach mal komplett weg.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
CenBells Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 18.10.02 18:19 
hallo lcs

ich habe in meiner DB 5500 Datensätze. Der wert wird richtig übergeben

wenn ich oben

for select ...
...
do
suspend;

mache, klappt alles
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Sa 19.10.02 11:20 
Hi
ich hab mal versucht das nachzuvollziehen und das klappt einwandfrei. Die Procedure ist in Ordnung. Beim Zugriff über IBConsole und beim Zugriff aus einem Programm heraus alles in Ordnung.
Hier scheint der Hund wirklich in deinem Programm begraben zu sein. :(

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
CenBells Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Sa 19.10.02 12:16 
das problem habe ich auch in der ibconsole... poste doch mal, wie du die prozedur von dort abfragst. vielleicht ist das das problem.

Gruß
Ken
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Sa 19.10.02 12:25 
Aufruf der Procedure in der IBConsole:
ausblenden Quelltext
1:
execute procedure get_prev_guest_key 5					

Die 5 ist der Übergabeparameter PASSED_CUR_KEY. Der Returnwert wird automatisch angezeigt.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
CenBells Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Sa 19.10.02 15:14 
ohh, danke ich habe immer
select * from get_prev_Guest_Key(5)

gemacht
....

Jetzt verstehe ich dann auch den unterschied.

Danke. Dann kann ich einige funktionen umstricken...

gruß
Ken