2016-05-05 6 views
-3

Delphi XE3コードからFirebirdでストアドプロシージャを作成するにはどうすればいいですか?私は、Delphiのコードを介してストアドプロシージャを追加したい。私はTSQLQuery.ExecSQL()を使用していますが、私が使用しています9列10DelphiコードからFirebirdでストアドプロシージャを作成

CREATE PROCEDURE GET_BRANCH_ID (
    EMPID Integer) 
returns (
    EMPBRANCHID Integer) 
AS 
declare variable EmpBrch Integer; 
Begin 
select EMP_BRANCH_ID from EMPLOYEE where EMPLOYEE_ID= :EMPID 
    into :EmpBrch; 
    EMPBRANCHID = :EmpBrch; 
    SUSPEND; 
End 

Delphiコードがある行でエラーを投げている:

with SQLQueryExc do 
begin 
    close; 
    SQL.clear; 
    SQL.Add(SPString.Text); 
    ExecSQL(); 
End 

任意の助けが理解されるであろう。ありがとう。

+1

どのようなエラーが表示されますか? –

+2

*それはエラーを投げています*あなたが私たちに特に言わない限り、意味のある問題の説明ではありません。あなたが見ている**正確**のエラーメッセージは何ですか? –

+0

@Kenホワイトありがとう。トークンは不明でした - 9行目、10列目? ParamCheckを作成して解決策を得ました:= False; –

答えて

1
ParamCheck:=False; 

それは私のために働きました。

2

問題は、;が文を終了するが、その中に;という文を実行しようとしているという問題があります。

ターミネータを別のものに変更する必要があります。

SET TERM !! ; 
CREATE PROCEDURE GET_BRANCH_ID (
    EMPID Integer) 
returns (
    EMPBRANCHID Integer) 
AS 
declare variable EmpBrch Integer; 
Begin 
select EMP_BRANCH_ID from EMPLOYEE where EMPLOYEE_ID= :EMPID 
    into :EmpBrch; 
    EMPBRANCHID = :EmpBrch; 
    SUSPEND; 
End !! 
SET TERM ; !! 

終了時に必ずターミネーターを;に戻してください。

参照:http://www.firebirdsql.org/manual/isql-terminator.html

+0

こんにちは@ヨハン、おかげで助けてください。私は問題がある。それはパラメータとしてEmpBrchを検討していました。だから私はParamCheckを作った:= False;出来た。とりあえずありがとう。 –

関連する問題