- PR -

VB.NETからODP.NETでStoredProcedureを呼び出して、DataSetでパラメータを一気にセットする方法を教えてく

1
投稿者投稿内容
ヤンヤン
会議室デビュー日: 2008/05/08
投稿数: 7
投稿日時: 2008-05-08 16:06
初心者ですが、以下の問題点の解決方法を教えてください。
プロシージャが正常に完了するようですが、パラメータの引渡しがしていなくて、結果として何も実行されていませんでした。(完了後、P_COMMIT、P_MSGがNULLのままです。)
-----環境----------------------------
Visual Studio .NET 2003
Framework 1.1
Oracle 9.2.0.1
ODP.NET 9.2.0.4

-----ストアドプロシージャ-------
PROCEDURE UPD_TEST(
P_KEY IN NUMBER -- テーブルのキー
,P_DATE IN DATE -- 更新日時
,P_COMMIT OUT NUMBER -- エラーフラグ
,P_MSG OUT VARCHAR2 -- エラーメッセージ
) IS

BEGIN

-- 初期化
P_COMMIT := -1;
P_MSG := '';

UPDATE TEST_TABLE
SET UPDATE_DATE = P_DATE
WHERE THE_KEY = P_KEY

P_COMMIT := 0 ;

EXCEPTION
WHEN OTHERS THEN
P_COMMIT := -1 ;
P_MSG := SUBSTRB('UPD_TEST : ' || SQLERRM, 1, 200) ;
RETURN ;
END;

-----VB.NETの呼び出し-------
'名 称 :UPDATE_DATE()
'目 的 :MY_PACKAGE.UPD_TESTのストアドプロシージャを通して、TEST_TABLEを更新する(複数レコード)
' ' 更新のレコードのキーは、dsのデータセットの"MY_KEY"項目に持っている(複数)
Public Function UPDATE_DATE(ByRef ds As DataSet) As Boolean

'DBのCONNECTION
Dim cDB As New Common.comDB
Dim cmd = CDB.DBConnection.CreateCommand()

'DataSetに、出力パラーメータを持つように追加
ds.Tables(0).Columns.Add("COMMIT")
ds.Tables(0).Columns.Add("MSG")

cmd.CommandText = "MY_PACKAGE.UPD_TEST"
cmd.CommandType = CommandType.StoredProcedure
cmd.BindByName = True

'パラメータ作成
cmd.Parameters.Add("P_KEY", OracleDbType.Int64, ParameterDirection.Input)
'dsのデータセットに、パラメータP_KEYの値が"MY_KEY"という項目に持っている
cmd.Parameters("P_KEY").SourceColumn = "MY_KEY"

cmd.Parameters.Add("P_DATE", OracleDbType.Date, Now(), ParameterDirection.Input)

cmd.Parameters.Add("P_COMMIT", OracleDbType.Int32, ParameterDirection.Output)
cmd.Parameters("P_COMMIT").SourceColumn = "COMMIT"

cmd.Parameters.Add("P_MSG", OracleDbType.Varchar2, 200, vbNull, ParameterDirection.Output)
cmd.Parameters("P_MSG").SourceColumn = "MSG"

'プロシージャ実行?
Dim da As New OracleDataAdapter(cmd)
da.Fill(ds.Tables(0))

'DBCONNECTIONを閉じる
CDB.CloseConnection()

End Function
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2008-05-09 11:14
http://otn.oracle.co.jp/forum/thread.jspa?threadID=35003772
1

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