掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
SQLStoredProcde (ID:3524)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
はじめまして。 早速ですが教えて下さい。 環境は、Delphi7 + Oracle9iで リモートデータモジュールを使用してソケット接続の3層アプリを作成しています。 構成は以下になっています。 (1層 DBサーバー) Oracle | ---------------------------- (2層 アプリサーバ) SQLConnection | SQLStoredProc | DataSetProvider | |(ソケット接続) | ---------------------------- (3層 クライアント) SocketConnection | ClientDataSet 基本的なDBの参照や更新処理などは行えています。 今回、ストアドを利用したく、SQLStoredProcを配置しました。 しかし、ストアドにOUTパラメータを設定するとエラーが(不正なパラメータ) でて正常に動作しません。 (INパラメータだけなら正常に行える) ソースは以下です。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ------ストアド本文------ CREATE OR REPLACE PROCEDURE PROC_TABLESET2( pi_vcName IN VARCHAR2, pi_nAge IN NUMBER, po_vcErrMsg OUT VARCHAR2 )AS BEGIN po_vcErrMsg := '成功!'; Insert Into Test(namd, age)Values(pi_vcName, pi_nAge); COMMIT; EXCEPTION WHEN OTHERS THEN BEGIN po_vcErrMsg := '失敗!'; ROLLBACK; END; END; ------Delphiソース------ procedure TForm1.Button6Click(Sender: TObject); begin try with DataModule.ClientDataSet do begin Close; FetchParams; Params.ParamByName('pi_vcName').AsString := Edit1.Text; Params.ParamByName('pi_nAge').AsInteger := StrToInt(Edit2.Text); Execute; ShowMessage(Params.ParamByName('po_vcErrMsg').Value); end; finally end; end; ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 当然、CelientDataSetのRemoteServerプロパティには対応するRemoteServerを設定し、 ProviderNameにも対応するProviderNameを設定しており、各コンポーネントの関連づけは間違いなく行われています。 「Execute」を「Open」に変えてみたりもしたのですが駄目でした。 TSQLCOnnectionの代わりにTDataBaseを利用し、 SQLStoredProcの代わりにStoredProcを利用し、その他の各種設定は変えない場合は動作します。 あと、多層でなく単層(DataSetProviderやCelinetDataSetを使用しない)で行う場合も正常に動作しました。 どこかが間違ってるんでしょうが、わかりません。 どなたかわかる方教えていただけないでしょうか? よろしくお願いします。 ※言葉が足りなくてわかりずらいかもしれませんがよろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.