- - PR -
テーブルへのレコードのInsert
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-11-29 17:42
いつもお世話になっております。
また、わからないことができたので 皆さんのお力をお貸しください。 サーバは、WindowsNTとOracle9.2です。 クライアントは、Windows2000とOracle9.2とODP.NETが入ってます。 あるテーブルにレコードをInsertしたいのですが、うまくできません。 テーブルの定義は、以下のような感じです。 テーブル名:AAA 項目1:CODE Char型 6バイト Null不可(ぷらいまりキー) 項目2:ITEM1 VerChar型 4000バイト Null許可 項目3:ITEM2 VerChar型 4000バイト Null許可 ODP.NETを使用して、VB.NETでレコードを挿入しようとしているのですが、 ITEM2とITEM3に、全角/半角すべてを含む、4000バイト以内の2000文字以上の 文字列を入れようとすると、「LONG値はLONG列にのみバインドできます。」という エラーメッセージが、出力されてしまいます。 しかし、下記の場合には、Insertできてしまいます。 @ITEM1に、全角/半角すべてを含む、4000バイト以内の2000文字以上の 文字列をセット、ITEM2に空文字列をセット AITEM1,ITEM2共に、全角2000文字をセット ITEM2とITEM3に、全角/半角すべてを含む、4000バイト以内の2000文字以上の 文字列をセットしたときに、テーブルにInsertすることは、できないのでしょうか? どなたか、おわかりになる方は、いらっしゃいますでしょうか? よろしくお願いします。 |
|
投稿日時: 2004-11-29 17:47
いろいろ調べてみたのですが、
現在SQL文をバインド変数を使用して、 OracleCommandオブジェクトに、OracleParameterを追加して、 Insert処理を行っているのですが、 バインド変数を使用すると、、「LONG値はLONG列にのみバインドできます。」 という、エラーが出力されるみたいですね。 ためしに、バインド変数を使用せずにSQL文を組んでみたら、 正しく、レコードのInsertを行うことができました。 ただし、できればSQL文の変更は行いたくないため、 バインド変数を使用してもInsertが実行できるようならば その方法が知りたいのですが、どうにか方法はないでしょうか? |
|
投稿日時: 2004-12-01 14:18
自己解決いたしました。
文字コードの問題でした。 SHIFT_JISで4000バイトに区切っていたのですが、 仕様では、UNICODEで区切ることになっていたようなので、 UNICODEでやってみたら、無事Insertすることができました。 考えていただいた方、大変お手数をおかけいたしました。 今後とも、なにとぞよろしくお願いします。 |
1