![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
こんにちは。たぶんとても基礎的なことと思うのですが。。。
Pro*CでSELECTするとき、WHERE句の中でVARCHAR2項目を条件に入れています。
が、どうも検索がうまくできなくて質問しました。
ホスト変数の定義…
char VVV[5];
検索するところ…
select xxx into :yyy from ZZZ
where ZZZ.varchar2no4BYTE = :VVV ;
のような感じです。ZZZ.varchar2no4BYTEの型はVARCHAR2(4)です。
で、ZZZ.varchar2no4BYTE が"1234"と"12"の2つのレコードを
登録しておいて、VVVに"1234"を入れると、ちゃんと検索できました。
んが、VVVに"12"を入れても検索されません。
そんなのあり?と
VVVに"12 "を入れてもだめ、
VVVをVARCHAR構造体?にして、"12"で長さ2にしてもだめ、
だけどZZZ.varchar2no4BYTEがCHAR(4)だと"12"でOK、
なんなんだとPro*Cのマニュアル見てもNUMBER型の検索例ばかり、
というところで力尽きました。
(あー、CHAR_MAP=STRING って関係あるですかね)
動的SQLにすればよいのかもしれませんが、事情で使えないのです。
それ以前にホスト変数の理解が間違っているのではないかと思い、
お聞きするしだいです。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
記憶モードで申し訳ないんですが、ORACLEのバージョンや
設定によって、ホスト変数に設定する文字列がレコード長
より短い場合の処理で、後にスペースを埋めておかないと
いけない場合と、終端Nullをセットする場合があったはず
です。
現在使っているORACLEのバージョンは何でしょうか?
自己解決しました。
結局、ホスト変数 VVV を
VARCHAR VVV[5];
のように宣言し、VVV.arrに"12"、VVV.lenに2を入れることで実現できました(質問の中のVARCHARを使って云々のときは宣言の仕方が間違っていました)。
なお、don_goさんご指摘のとおり、「オラクルがサポートしているOSバージョンとPro*Cの相性が悪いと意味不明な挙動をする」という話もあるようです。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL php テーブルを作れない 2 2022/11/17 18:22
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
同じテーブルをLEFT JOIN
-
TO_CHAR関数における外部結合に...
-
LEFT JOINの条件式で=’’を使用...
-
内部結合する時の結合条件と制...
-
WHERE句の書き方
-
関係演算子が無効です。
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
SELECTで1件のみ取得するには?
-
Accessで別テーブルの値をフォ...
-
アクセスでレポートの1印刷内...
-
Excelで、改行がある場合の条件...
-
SQL文で右から1文字だけ削除す...
-
GROUP BYを使ったSELECT文の総...
-
SELECTの結果で同一行を複数回...
-
ADO VBA 実行時エラー3021
-
固定値を含む結合と複数テーブ...
-
ACCESSの集計クエリで3件ある...
-
Accessでのレコード存在チェック
-
DATE型にNULLをセットするには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL 外部結合についての質問
-
2つのSQL(Access)の結果[時刻,...
-
エラー「無効な識別子です」
-
エラー2「無効な識別子です」
-
関係演算子が無効です。
-
自己相関サブクエリと自己結合...
-
エクセルVBAでSUM関数の位置を...
-
同じテーブルをLEFT JOIN
-
TO_CHAR関数における外部結合に...
-
Excel VBAで、Averageの範囲を...
-
range表記をcells表記にしたい
-
内部結合する時の結合条件と制...
-
SQLで後方の文字列を置換する方法
-
SQL 副問い合わせ使い方について
-
Access 結合条件設定方法
-
LEFT JOINの条件式で=’’を使用...
-
WHERE句の書き方
-
Oracle SQL 結合の手法について
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
おすすめ情報