2016-11-05 3 views
1

J'ai une application gratuite en utilisant pascals Firebird. Comment puis-je récupérer la variable de sortie de cette procédure Firebird stockée:Comment récupérer la variable de sortie de Firebird

input parameters: ID (integer) 
output parameters: G (integer) 

begin 
if(select town.count from town where town.id=:id) then 
    G = 100 
else 
    G = 200; 
    suspend; 
end 

in designer->SQL 
EXECUTE PROCEDURE ID_DEV :ID RETURNING_VALUES :G 

Dans le code:

SQLQueryProc.Prepare; //here i got an error 
SQLQueryProc.ParamByName('ID').Value:=res; 
SQLQueryProc.ExecSQL(); 
SQLTransaction.CommitRetaining; 
ID:=SQLQueryProc.FieldByName('G').AsInteger; 

Quand je lance mon application, je reçois une erreur:

Token unknown line (where :G located)

J'ai essayé beaucoup de combinaisons. Quelle est la raison?

Répondre

1

La clause RETURNING_VALUES :G est seulement valide à l'intérieur syntaxe Firebird PSQL (donc dans une procédure stockée). Si vous voulez exécuter la procédure stockée, vous ne devez utiliser:

EXECUTE PROCEDURE ID_DEV :ID 

Comme vous voulez avoir une procédure exécutable stockée, vous devez également supprimer la SUSPEND de votre procédure stockée, comme ayant une déclaration suspension dans votre procédure stockée en fait une procédure stockée sélectionnable à la place.