interbase procedureからSQLCODEを取得するには?

解決


ちゃ  2003-09-15 07:49:26  No: 4821

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 ^


えび  2003-09-15 10:31:21  No: 4822

プロシージャに出力パラメータを定義して、それにセットすれば良いです。
結果の取り出し方は、TQueryコンポーネントとTStoredProcコンポーネント、もしくはIBXのそれらのどれで実行したかによって違いますけど。
但し、エラーの処理はプロシージャ内で行わずにプログラム内で行ったほうが楽ですけど...


ちゃ  2003-09-15 19:43:17  No: 4823

出力パラメータを定義しようとしましたが、
SQLCODEのデータタイプが分かりません。
教えていただけないでしょうか。


えび  2003-09-15 21:28:57  No: 4824

SQLコードはWHEN句のオプションでしかないので変数のように取り扱い
できません。
例えばSQLコードが-530だったら、出力パラメータに-530をリテラルで
セットするしかないと思います。(パラメータはINTEGERで)
後、出力パラメータがないこのプロシージャでSUSPENDは必要ないです。


ちゃ  2003-09-16 07:54:18  No: 4825

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加