C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: ODP.netを用いてSQL文を送る際のエラー


(過去ログ 95 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■56594 / inTopicNo.1)  ODP.netを用いてSQL文を送る際のエラー
  
□投稿者/ ハル (1回)-(2011/01/21(Fri) 03:43:42)

分類:[VB.NET/VB2005 以降] 

2011/01/21(Fri) 03:44:32 編集(投稿者)


■開発環境
Windowsアプリケーション
言語:VB.NET (2010)
ORACLEバージョン:ORACLE 11gR2
ORACLEとのインタフェース:ODP.NET

はじめまして。
いつも大変参考にさせていただいております。

ODP.netを用いてDBに接続することはできたのですが、SQLコマンドを送ると必ずエラーがかえってきてしまいます。
エラーと書きましたが、コマンドライン上で返ってくるエラーを指しています(ORA-/////)。

もちろん、SQL文に間違いがあるのかと思いいろいろ試してみましたが、コマンドライン上では問題なく動作するSQLをodp.netを通して
DBに投げても、同様のエラーが返ってきてしまいました。(返ってくるエラーの種類は様々で、投げるSQL文によって異なるようでした)

お手上げ状態です。どなたかご教授おねがいします。


引用返信 編集キー/
■56596 / inTopicNo.2)  Re[1]: ODP.netを用いてSQL文を送る際のエラー
□投稿者/ shu (376回)-(2011/01/21(Fri) 07:44:25)
No56594 (ハル さん) に返信

どうやって記述したか分からなければ何ともいえません。エラー内容も省略してしまっているし。
接続していることはどうやって確認されたのでしょうか?

単純なSelect * From テーブル でも発生するのでしょうか?
引用返信 編集キー/
■56633 / inTopicNo.3)  Re[2]: ODP.netを用いてSQL文を送る際のエラー
□投稿者/ ハル (2回)-(2011/01/23(Sun) 03:17:24)
No56596 (shu さん) に返信
> どうやって記述したか分からなければ何ともいえません。エラー内容も省略してしまっているし。
> 接続していることはどうやって確認されたのでしょうか?
>
> 単純なSelect * From テーブル でも発生するのでしょうか?

返信ありがとうございます。
どうやら;を最後につけた状態でExecuteReaderするとエラーになるようでした。
("select *from table"はいけましたが、"select *from table;"はエラー)

insert deleteなどはいけましたが、
"DESC テーブル"だけは
ORA-00900 SQL文が無効です。
のエラーが依然として返ってきてしまっています。
引用返信 編集キー/
■56634 / inTopicNo.4)  Re[3]: ODP.netを用いてSQL文を送る際のエラー
□投稿者/ やじゅ (1822回)-(2011/01/23(Sun) 11:36:32)
やじゅ さんの Web サイト
No56633 (ハル さん) に返信
> "DESC テーブル"だけは
> ORA-00900 SQL文が無効です。
> のエラーが依然として返ってきてしまっています。

そうしたら、「DESC テーブル」で検索してみるといいんじゃないの。

引用返信 編集キー/
■56726 / inTopicNo.5)  Re[3]: ODP.netを用いてSQL文を送る際のエラー
□投稿者/ 裕猫 (209回)-(2011/01/28(Fri) 09:02:18)
No56633 (ハル さん) に返信
> ■No56596 (shu さん) に返信
>>どうやって記述したか分からなければ何ともいえません。エラー内容も省略してしまっているし。
>>接続していることはどうやって確認されたのでしょうか?
>>
>>単純なSelect * From テーブル でも発生するのでしょうか?
>
> 返信ありがとうございます。
> どうやら;を最後につけた状態でExecuteReaderするとエラーになるようでした。
> ("select *from table"はいけましたが、"select *from table;"はエラー)
>
> のエラーが依然として返ってきてしまっています。
using (OracleCommand cmd = con.CreateCommand())
{
cmd.CommandText = "select * from table";
using (OracleDataReader dr = cmd.ExecuteReader())
{
dr.Read();
}
}
ODPでのサンプルです。C#です。VBはusingありましたっけ?その辺不明ですが、私の所はこれでデータの読み込みをしています。
引用返信 編集キー/
■56727 / inTopicNo.6)  Re[3]: ODP.netを用いてSQL文を送る際のエラー
□投稿者/ 魔界の仮面弁士 (2037回)-(2011/01/28(Fri) 09:31:09)
No56633 (ハル さん) に返信
> insert deleteなどはいけましたが、
> "DESC テーブル"だけは

DESC (DESCRIBE) コマンドは SQL*Plus 独自のコマンドであって、
PL/SQL そのものではありません。ゆえに ODP.NET では実行できません。
http://www.shift-the-oracle.com/sqlplus/command/
http://www.oracle.co.jp/forum/message.jspa?messageID=35003275

代わりに以下のような手法を試してみてください。


(案1) 『SELECT 〜 FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 〜』を利用する。


(案2) Oracle.DataAccess.Client.OracleDataReader クラスの GetSchemaTable メソッドを利用する。

 Dim tbl As DataTable
 Dim cmd As New OracleCommand(sql, con)
 Dim r = cmd.ExecuteReader()
 tbl = r.GetSchemaTable()
 r.Close()


(案3) DBMS_SQL パッケージを下記の例8のように用いる。
http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/appdev.111/E05686-02/d_sql.htm
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -