- - PR -
VB.NETからODP.NETでStoredProcedureを呼び出して、DataSetでパラメータを一気にセットする方法を教えてく
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 |
|
投稿日時: 2008-05-09 11:14
http://otn.oracle.co.jp/forum/thread.jspa?threadID=35003772
|
1