delphi7,dbはinterbaseです。
以下のようなinterbaseのprocedure内のSQLCODEを
delphiのほうに取得したいのですが、どのようにこの
procedureを改造したらよろしいでしょうか。
CREATE PROCEDURE ADD_EMP_PROJ (EMP_NO SMALLINT, PROJ_ID CHAR(5))
AS
BEGIN
BEGIN
INSERT INTO EMPLOYEE_PROJECT (EMP_NO, PROJ_ID)
VALUES (:emp_no, :proj_id);
WHEN SQLCODE -530 DO 処理。。;
END
SUSPEND;
END ^
プロシージャに出力パラメータを定義して、それにセットすれば良いです。
結果の取り出し方は、TQueryコンポーネントとTStoredProcコンポーネント、もしくはIBXのそれらのどれで実行したかによって違いますけど。
但し、エラーの処理はプロシージャ内で行わずにプログラム内で行ったほうが楽ですけど...
出力パラメータを定義しようとしましたが、
SQLCODEのデータタイプが分かりません。
教えていただけないでしょうか。
SQLコードはWHEN句のオプションでしかないので変数のように取り扱い
できません。
例えばSQLコードが-530だったら、出力パラメータに-530をリテラルで
セットするしかないと思います。(パラメータはINTEGERで)
後、出力パラメータがないこのプロシージャでSUSPENDは必要ないです。
ありがとうございました。
ツイート | ![]() |