- - PR -
ORA-01036: 変数の名前/数が無効です。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-01-09 17:23
ASP.NET、Oracle9.0で開発しております。
1.データアダプタ構成ウィザードを使用し、データアダプタを作成します。 2.作成したデータアダプタよりデータセットを生成します。 3.更新処理で上記で作成したデータセットを使用しアダプタのupdateメソッドを作成します。 DbDataAdapter.Update(DataSet) とした場合にまれに 「ORA-01036: 変数の名前/数が無効です。」といったエラーが出るテーブルがあります。 原因が解らず困ってます。ご存知の方よろしくお願いします。 | ||||
|
投稿日時: 2005-01-10 07:06
DataAdapterのUpdateメソッドで使用する更新用のSQL文は、CommandBuilderで作成していますか。それとも、手動で作成していますか? 以下のステートメントを追加して確認してみてください。 Response.Write(DbDataAdapter.GetUpdateCommand.CommandText) それから、Oracleにネイティブに対応しているODP.NETを使用していますか。 _________________ ASP.NETサンプル集(Web Matrix版) [ メッセージ編集済み 編集者: Access 編集日時 2005-01-10 07:06 ] | ||||
|
投稿日時: 2005-01-11 10:12
Accessさん、こんにちわ。
Response.Write(DbDataAdapter.GetUpdateCommand.CommandText) を記述してみたのですが、OlacleDataAdapterのメンバではありませんのエラーが出ます。 あまり詳しくないので正確な解答は出来ないのですが、 コードは以下のようになってます。 Dim myRow As DataRow Dim myOCN As New OracleConnection Dim myODA As New OracleDataAdapter Dim myCOM As OracleCommand Dim mySQL As String Dim myDS As New DataSet Dim myDV As New DataView myOCN.ConnectionString = 'ここにコネクションコードを記入' mySQL = "SELECT * FROM ATBL WHERE CODE=" & strCode myCOM = New OracleCommand(mySQL, myOCN) myODA.SelectCommand = myCOM myODA.Fill(myDS, "ATBL") myDV.Table = myDS.Tables("ATBL") If myDV.Count > 0 Then myRow = myDV(0).Row Else myRow = myDV.Table.NewRow() myDV.Table.Rows.Add(myRow) End If myRow("NAME") = "名称1" '更新 DbDataAdapter.Update(myDS) '<--これはデータアダプタ構成ウィザードで作成したアダプターでアップデートしてる。 ★ちなみにSELECT文で使用したデータアダプタを使用しCommandBuilderを使用するとエラーにはなりません。 Dim cmd As New OracleCommandBuilder(ODA_Work) myODA.UpdateCommand = cmd.GetUpdateCommand myODA.Update(myDS, "ATBL") SELECTした際のデータアダプタとUPDATEした際データアダプタが違うのが悪いのでしょうか? データセットに作成された項目数(項目名)がウィザードで作成したコマンドと違ってるのかもしれません。もう少し調査してみます。 | ||||
|
投稿日時: 2005-01-11 20:16
CommandBuilderで作成したUPDATEのSQL文を使用するとOKということは、 OracleDataAdapterのウィザードで生成されたUPDATE文と異なるのでは? 以下のようにTraceを入れてDataAdapterのウィザードで作成されたSQLと 比較してみたらどうでしょうか。 Dim cmd As New OracleCommandBuilder(ODA_Work) Trace.Warn(cmd.GetUpdateCommand.CommandText) myODA.UpdateCommand = cmd.GetUpdateCommand myODA.Update(myDS, "ATBL") _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 |
1