- PR -

カーソル変数の入力パラメータを持つプロシージャの呼び出し方

1
投稿者投稿内容
Meta
常連さん
会議室デビュー日: 2005/11/24
投稿数: 31
投稿日時: 2008-11-27 18:44
ORACLEのストアドプロシージャの入力パラメータにカーソル変数を設定し、
それのプロシージャを.NETから呼び出する場合、.NET側で入力パラメータに設定するデータ型を教えて下さい。

以下のように.NETからDataset型の変数をパラメータとしてストアドに
渡しているのですが、できません。
Datatable型で渡してもできませんでした。
そもそも、Dataset型、Datatable型ではないのでしょう?

■===== プロシージャ ==================
TYPE cursor IS REF CURSOR;

PROCEDURE MAIN(inPara IN ref_cursor) IS
BEGIN
・・・
 FETCH inPara INTO cursor_data
・・・
END
====================================

上記プロシージャを下記.NETで呼び出し
★===== .NET =======================
Public objCmd As New OracleCommand
Dim para_cursor = New OracleParameter("inPara", OracleDbType.RefCursor)
Dim ds = New DataSet

〜 データベースをオープンする処理は省略〜

objCmd.CommandType = CommandType.StoredProcedure
objCmd.CommandText = "MAIN"
para_cursor.Direction = ParameterDirection.Input
para_cursor.Value = ds
objCmd.Parameters.Add(para_cursor)
objCmd.ExecuteNonQuery()
============================================

[ メッセージ編集済み 編集者: bu 編集日時 2008-12-01 19:52 ]
にー
常連さん
会議室デビュー日: 2006/04/30
投稿数: 35
投稿日時: 2008-11-29 11:53
カーソルをINで渡す意味は何なのでしょう。

カーソルを受け取る事は私も経験があり、どんな時に使用するの
か分かるのですが、ご質問のケースは想像できません。

もしかしたら、プログラム処理設計そのものに問題があるのかも
しれません。
Meta
常連さん
会議室デビュー日: 2005/11/24
投稿数: 31
投稿日時: 2008-12-01 12:24
.NETで作った画面から入力データをプロシージャに渡して、処理を行い最終的にINSERTする。という処理になります。

カーソルでなくてもPL/SQLに表形式のデータをINで渡したいのです。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2008-12-01 13:36
ODP.netよくわかんないけど、Nested-tableとして、バインドしてあげれば、いけるかもね。
http://forums.oracle.com/forums/thread.jspa?messageID=1248007&
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2008-12-01 13:40
マルチポストするならするで、ちゃんと書いといてくれ!!!
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=47413&forum=7
Meta
常連さん
会議室デビュー日: 2005/11/24
投稿数: 31
投稿日時: 2008-12-01 19:48
ODP.netを使用していますが、サンプルのようにINパラメータにNestTableの型を指定することができません。そもそもOracleDbTypeにNestTableがありません。


>マルチポストするならするで、ちゃんと書いといてくれ!!!

すみません。書いたことを忘れてて投稿しちゃいました。。。

[ メッセージ編集済み 編集者: bu 編集日時 2008-12-01 19:53 ]
1

スキルアップ/キャリアアップ(JOB@IT)