初めまして権兵衛と申します。
いつも参考にさせてもらっています。
質問はタイトルの通り「DelphiからFirebirdのストアドプロシージャを実行するには?」です。
Delphiから引数を渡して、ストアドの結果(構造体)で受け取るなんてことは可能なのでしょうか?
要は、DBに対して検索をさせたい画面で、実際に検索する部分(select)をFirebirdのストアドにやらせて、結果をDelphiで受け取るなんてことがしたいのですが…。
権兵衛さん。こんにちは。
Firebirdのストアドプロシージャを
SET TERM !! ;
CREATE PROCEDURE GET_ANS (Param1 varchar(10))
RETURNS (ans varchar(20))
AS
DECLARE VARIABLE W_ANS varchar(20);
BEGIN
SELECT ITEM_A FROM TABLE_A
WHERE ITEM_B = :Param1
INTO W_ANS;
IF (W_ANS IS NULL) THEN
BEGIN
ans = '';
END
ELSE
BEGIN
ans = W_ANS;
END
END
!!
SET TERM ; !!
で作成して
TSQLStoredProcを使用して
var
Ans: string;
begin
SQLStoredProc.StoredProckName := 'GET_ANS';
SQLStoredProc.ParamByName('Param1').AsString := '(キー)';
SQLStoredProc.ExecProc;
Ans := SQLStoredProc.ParamByName('ans').AsString;
end;
で出来たと思います。
pekesukeさん
ありがとうございます。
結果のデータは複数件なので、せっかく教えて頂いた方法では
残念ながら出来ませんでしたので、
IBQueryを使用して
「select * from プローシジャ名(IN引数)」で
いけました。
解決です。
何かありましたらまたよろしくお願いします。
ありがとうございました。
pekesukeさん
ありがとうございます。
結果のデータは複数件なので、せっかく教えて頂いた方法では
残念ながら出来ませんでしたので、
IBQueryを使用して
「select * from プローシジャ名(IN引数)」で
いけました。
解決です。
何かありましたらまたよろしくお願いします。
ありがとうございました。