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

データ抽出時のパラメータ

投稿者投稿内容
MELODY
会議室デビュー日: 2003/08/28
投稿数: 11
投稿日時: 2003-08-28 18:37
はじめまして、MELODYです。

パラメータを設定して、Oracleからデータを抽出しDataGridに結果を
表示したいのですがうまくいきません。
Oracleのエラーで「式がありません」と表示されます。
Select文の構文がおかしいようですが、教えていただけますか。
パラメータを使用せずに値をきめうちするとDataGridに表示されます。

MyCommand1 = New OleDbCommand("select * from T_PRESEN where PROD_FAM_CD= '@PROD_FAM'", MyConnection)
MyCommand1.Parameters.Add("@PROD_FAM", OleDbType.VarChar, 5).Value = MySelect1.SelectedItem.Value
MyAdapter1.SelectCommand = MyCommand1
MyDataset1 = New DataSet()

//ここでエラーになります。
MyAdapter1.Fill(MyDataset1, "T_PRESEN")

MyDataGrid1.DataSource = MyDataset1.Tables("T_PRESEN").DefaultView
MyDataGrid1.DataBind()

宜しくお願い致します。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-08-28 19:26
MELODYさん、こんばんは。

引用:

MyCommand1 = New OleDbCommand("select * from T_PRESEN where PROD_FAM_CD= '@PROD_FAM'", MyConnection)



MSDNライブラリで、OleDbCommand.Parameters プロパティについて調べてみて下さい。
以下のような記述があります。
引用:

CommandType を Text に設定した場合、OLE DB .NET プロバイダでは、 OleDbCommand が呼び出す SQL ステートメントまたはストアド プロシージャにパラメータを渡すための名前付きパラメータを利用できません。


MELODY
会議室デビュー日: 2003/08/28
投稿数: 11
投稿日時: 2003-08-28 19:42
きくちゃんさんありがとうございます。

MSDNを確認しましたら、確かに使用できないと書かれていました。
早速修正しましたら、成功しましたが、名前付きパラメータを
使用したいのですが、方法があれば教えていただけますか。

宜しくお願い致します。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-08-28 19:56
MELODYさん、こんばんは。

引用:

名前付きパラメータを使用したいのですが、方法があれば教えていただけますか。



.Net Framework 1.1 なら、System.Data.OracleClient のデータプロバイダで名前付きパラメータが使用できます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-08-29 08:38
引用:

MELODYさんの書き込み (2003-08-28 19:42) より:

MSDNを確認しましたら、確かに使用できないと書かれていました。
早速修正しましたら、成功しましたが、


 1つ確認しますが、

MyCommand1 = New OleDbCommand("select * from T_PRESEN where PROD_FAM_CD= '?'", MyConnection)

ではなく、

MyCommand1 = New OleDbCommand("select * from T_PRESEN where PROD_FAM_CD= ?", MyConnection)

です。パラメータを使用するときは引用符はいりません。
MELODY
会議室デビュー日: 2003/08/28
投稿数: 11
投稿日時: 2003-08-29 10:35
きくちゃんさんありがとうございます。

.Net Framework 1.1 で試してみます。

Jittaさん
引用:
パラメータを使用するときは引用符はいりません。


はい、引用符はいりませんでした。


MELODY
会議室デビュー日: 2003/08/28
投稿数: 11
投稿日時: 2003-09-03 14:33
こんにちわ。
日がたってからで申し訳ありませんが、
.Net Framework 1.1をインストールして、名前付きパラメータを
使用したのですが、エラーが表示されます。
エラー内容は「ORA-00936 式がありません」です。

どなかた教えていただけないでしょうか。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-03 14:57
引用:

MELODYさんの書き込み (2003-09-03 14:33) より:

.Net Framework 1.1をインストールして、名前付きパラメータを
使用したのですが、エラーが表示されます。
エラー内容は「ORA-00936 式がありません」です。


 使用したSQL文は、前回と同じ、
New OleDbCommand("select * from T_PRESEN where PROD_FAM_CD= ?", MyConnection)
ですか?

 パラメータがnull(Nothing)とか、空文字列とかになっていませんか?オラクルでは空文字列はnullとして扱われますが、nullの比較には「IS」演算子を用いなければなりません。

 なお、使用するには登録が必要ですが、
http://otn.oracle.co.jp/forum/index.html
オラクルテクノロジーネットワークの掲示板内、「Oracleメッセージ検索」が便利です。

 掲示板内では、日本語を使っているためにエラーになっているケースがありました。列名、表名に日本語を使っていませんか?

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