Einzelnen Beitrag anzeigen

Jochen

Registriert seit: 14. Mär 2005
4 Beiträge
 
#1

Anweisung vor "FOR SELECT" Block

  Alt 14. Mär 2005, 13:19
Datenbank: Interbase • Version: 5 • Zugriff über: TIB_Cursor
Hallo zusammen,

ich habe folgendes Problem:

ich möchte per SQL Befehl über die IB_Cursor-Komponente eine Prozedur in der Datenbank verändern. Dazu verwende ich das folgende Code-Konstrukt:

SQL-Code:
ALTER PROCEDURE Test (Index CHAR(10))
RETURNS
(
  Wert1 FLOAT, WERT2 FLOAT, Diff FLOAT
)
AS
BEGIN
  IF (:Index = "") THEN SELECT anderenWert FROM Tabelle INTO :Index; (*)
  FOR SELECT A, B FROM Tabelle2
    WHERE (Tabelle2.Index = :Index)
    INTO :Wert1, :Wert2
  DO
  BEGIN
    Diff=- :Wert1 - :Wert2;
  END
END
Das merkwürdige ist nun, dass genau dieses Statement beim Ausführen im Interbase-Client ohne Fehlermeldung funktioniert. In Delphi hingegen wird nach dem Aufruf von
Delphi-Quellcode:
IB_Query.SQL.Text := ...;
IB_Query.prepare();
eine Exception geworfen.

Die Ursache hierfür muss in der Codezeile (*) liegen, da der Fehler ohne diese Abfrage nicht auftritt.
Allerdings weiß ich nicht, wie ich dieses Problem umgehen kann.
Meine Vermutung ist, dass es sich um ein Problem mit dem Trennzeichen ";" handelt.

Im Voraus bereits vielen Dank

Schöne Grüße
Jochen
  Mit Zitat antworten Zitat