ストアドプロシジャーの使い方を教えてください。

WebObjectsでストアドプロシージャの使い方が分かりません。
できましたら、何かサンプルがありませんでしょうか。

投稿日 2001/11/12 16:07

返信: 5

2001/11/12 16:42 Community User への返信

ヘルプの
EOUtilities.executeStoredProcedureNamed()
をご参照ください。OmniGroupのメーリングリストの過去ログで
StoredProcedureと検索すると結構ヒットしますよ。

2001/12/06 08:41 Community User への返信

Oracle8i 8.1.6 に以下の引数を取るストアードプロシージャを
作成しました。
PROCEDURE TEST (
X IN VARCHAR2,
Y OUT VARCHAR2,
Z OUT VARCHAR2) IS ...省略
そして、WebObjects5 から以下のようなソースで呼び出してみたのですがエラーが起きてしまいます。
EOEditingContext ec =
((Session)session()).defaultEditingContext();
NSDictionary args = new NSDictionary("abc","x");
NSDictionary ret =
EOUtilities.executeStoredProcedureNamed(ec,"test",args);
エラー内容:
ORA-06550: 行 1、列 13:
PLS-00306: 'TEST'の呼出しで、引数の数または型が正しくありません。
ORA-06550: 行 1、列 7:
PL/SQL: Statement ignored
ちなみにSQL*Plusからは正常に実行できます。
また、ストアードプロシージャの情報はEOModelerのウィザードで
自動で取得したままです。
何かわかることがありましたらよろしくお願い致します。

2001/12/08 12:17 Community User への返信

それでは、
rowRawSQL をつかって、直接SQLを投げてはどうでしょうか。
SQLにexec文で引数をもったストアドプロシージャを投げることが
できたと思います。
(SQLが少し汚くみえてしまうかもしれませんが)

2001/12/10 21:36 Community User への返信

アドバイスありがとうございます。
EOModelerでプロシージャの情報を見ると
Column項目に最初はデフォルト値でパラメータの順番を
表す数値が入っていたのですが、これを実際のプロシージャの
パラメータ名に変更したら、executeStoredProcedureNamedで
動作しました。
ただ、プロシージャのパラメータの名前で勝手にソートして
しまうらしく、別のパラメータに別の値が入ってしまうなどの
現象が発生してしまいます。
何か解決策があるのでしょうか・・・・。

2001/12/13 10:44 Community User への返信

rawRowsForSQL ではプロシージャに
A OUT VARCHAR2 などとOUT指定のパラメータが宣言されている
場合には変数を渡さないといけないため、実現できませんでした。
また呼び出し時には、 exec procedure_name(...) ではなく
begin procedure_name(...);end; を渡さないとうまく実行されないようです。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

ストアドプロシジャーの使い方を教えてください。

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。