AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi unklares verhalten einer stored proc in Firebird
Thema durchsuchen
Ansicht
Themen-Optionen

unklares verhalten einer stored proc in Firebird

Ein Thema von Nightfly · begonnen am 2. Apr 2004 · letzter Beitrag vom 5. Apr 2004
Antwort Antwort
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#1

unklares verhalten einer stored proc in Firebird

  Alt 2. Apr 2004, 09:57
Hi

also, folgender ausdruck liefert bei einer konkreten variablenbelegung ein ergebniss:
SQL-Code:
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)
Die folgende StoredProc gibt aber <null> zurück,obwohl sie doch zu dem obigen ausdruck identisch ist. Hilfe,ich versteh das nich!!


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
  Mit Zitat antworten Zitat
Lemmy

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

Re: unklares verhalten einer stored proc in Firebird

  Alt 4. Apr 2004, 16:45
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
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#3

Re: unklares verhalten einer stored proc in Firebird

  Alt 5. Apr 2004, 06:58
Hallo Lemmy,
Zitat von Lemmy der Weise:
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.
Das ist nicht grundsätzlich richtig. Solange nur ein Wert zurückgegeben werden soll, ist eine For - Do Schleife nicht nötig.

Diese funktioniert z.B.:

SQL-Code:
CREATE PROCEDURE "OhneFor"
RETURNS (
    "Erg" NUMERIC(15,2))
AS
begin
  select SUM(S3) FROM "TestComp" into :"Erg";
  suspend;
end
mit der Abfrage:

SELECT "Erg" from "OhneFor"
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
DelphiDeveloper

Registriert seit: 9. Apr 2003
Ort: Köln
256 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: unklares verhalten einer stored proc in Firebird

  Alt 5. Apr 2004, 13:38
Zitat:
Die folgende StoredProc gibt aber <null> zurück,obwohl sie doch zu dem obigen ausdruck identisch ist. Hilfe,ich versteh das nich!!
wie ruft du denn deine SP auf?

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?
  Mit Zitat antworten Zitat
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#5

Re: unklares verhalten einer stored proc in Firebird

  Alt 5. Apr 2004, 13:49
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...
  Mit Zitat antworten Zitat
DelphiDeveloper

Registriert seit: 9. Apr 2003
Ort: Köln
256 Beiträge
 
Delphi XE2 Enterprise
 
#6

Re: unklares verhalten einer stored proc in Firebird

  Alt 5. Apr 2004, 13:53
Zitat:
SQL Tool
wo und was ist das?

SQL Editor im IBexpert?
  Mit Zitat antworten Zitat
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#7

Re: unklares verhalten einer stored proc in Firebird

  Alt 5. Apr 2004, 15:39
ja, das meinte ich
  Mit Zitat antworten Zitat
DelphiDeveloper

Registriert seit: 9. Apr 2003
Ort: Köln
256 Beiträge
 
Delphi XE2 Enterprise
 
#8

Re: unklares verhalten einer stored proc in Firebird

  Alt 5. Apr 2004, 15:43
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?
  Mit Zitat antworten Zitat
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#9

Re: unklares verhalten einer stored proc in Firebird

  Alt 5. Apr 2004, 15:58
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...
  Mit Zitat antworten Zitat
DelphiDeveloper

Registriert seit: 9. Apr 2003
Ort: Köln
256 Beiträge
 
Delphi XE2 Enterprise
 
#10

Re: unklares verhalten einer stored proc in Firebird

  Alt 5. Apr 2004, 16:12
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.
  Mit Zitat antworten Zitat
Antwort Antwort


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 +1. Es ist jetzt 21:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz