@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

次のようなSQL文が、何故かエラーになります。

投稿者投稿内容
カレー落武者
常連さん
会議室デビュー日: 2003/09/12
投稿数: 49
投稿日時: 2003-10-06 11:21
Oracleのデータベースにアクセスするアプリケーションを作成しております。
言語はC#です。

次のようなコードを記述して、データセットを作成しようとしております。
---------------------
//SQL文を生成する。
string strSql = "SELECT * , '" + Textbox1.Text + "' AS TEXTBOX1 FROM WHERE (ID = 1)";

//DataSetを生成する
oracleSelectCommand1.CommandText = strSql;
oracleSelectCommand1.Connection = oracleConnection1;
oracleDataAdapter1.SelectCommand = oracleSelectCommand1;
oracleDataAdapter1.Fill(DataSet1);

---------------------

上記のFillメソッドの時点で例外が発生します。
例外の内容は、
「ORA-00923: FROMキーワードが指定の位置にありません。」

というものです。
しかし、SQL文自体は、Oracle Enterprise Manager ConsoleのSQLスクラッチパッドで実行すると、正常に実行可能なのです。
何が原因なのかさっぱり分かりません。
どなたか、教えて頂けないでしょうか?
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2003-10-06 11:25
From句のあとに対象テーブルがないようですが。
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2003-10-06 11:34
引用:

カレー落武者さんの書き込み (2003-10-06 11:21) より:
上記のFillメソッドの時点で例外が発生します。
例外の内容は、
「ORA-00923: FROMキーワードが指定の位置にありません。」

というものです。
しかし、SQL文自体は、Oracle Enterprise Manager ConsoleのSQLスクラッチパッドで実行すると、正常に実行可能なのです。
何が原因なのかさっぱり分かりません。
どなたか、教えて頂けないでしょうか?


 明らかにSQL文のミスです。
提示されているSQL文は何で動かそうとも動かないかと・・・。
カレー落武者
常連さん
会議室デビュー日: 2003/09/12
投稿数: 49
投稿日時: 2003-10-06 11:42
すいません・・・書き写す時に誤って消してしまいました。

正しくは、
----------
string strSql = "SELECT * , '" + Textbox1.Text + "' AS TEXTBOX1 FROM SchemaName.TableName WHERE (ID = 1)";
----------

そりゃテーブル名が無ければ動かないですわな(笑)。
作られるSQL文は、以下のようになりました。
"SELECT * , 'TEXT1' AS TEXTBOX1 FROM SchemaName.TableName WHERE (ID = 1)"

確かに、これでも動かないのです。スキーマ名を間違えていないか、など確認はしてみたのですが、間違いは無いようなのです。
ただ、これなら動きます。

"SELECT * FROM SchemaName.TableName WHERE (ID = 1)"

どうも、"'TEXT1' AS TEXTBOX1" の部分が動かない原因なのかと考えたのですが、これがどう間違えているのか、どう直せばいいのか、よく解らないのです。
紛らわしい質問で申し訳ないのですが、教えていただけないでしょうか?
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2003-10-06 11:45
 ASを省略したらどうなりますか?
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-06 11:54
SELECT [別名].*, 'TEXT1' AS TEXTBOX1
FROM SchemaName.TableName [別名] WHERE (ID = 1)
ですかね〜

[ メッセージ編集済み 編集者: ぴで 編集日時 2003-10-06 11:56 ]
カレー落武者
常連さん
会議室デビュー日: 2003/09/12
投稿数: 49
投稿日時: 2003-10-06 11:56
> ASを省略したらどうなりますか?

つまり、
"SELECT * , 'TEXT1' TEXTBOX1 FROM SchemaName.TableName WHERE (ID = 1)"
もしくは、
"SELECT * , 'TEXT1' FROM SchemaName.TableName WHERE (ID = 1)"

とする方法ですね?
やってみたのですが、同じでした。エラーメッセージも、やはり同じものが出ます。
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2003-10-06 11:56
こんにちは。

"SELECT * , 'TEXT1' AS TEXTBOX1 FROM SchemaName.TableName WHERE (ID = 1)"

,が余計だと思いますが。。。
"SELECT * 'TEXT1' AS TEXTBOX1 FROM SchemaName.TableName WHERE (ID = 1)"
でどうでしょう?

--------------------------------
って、勘違いしてました。
これでもダメです。出直してきます(笑)。

[ メッセージ編集済み 編集者: まゆりん 編集日時 2003-10-06 12:03 ]

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