[pgsql-jp: 41417] Re: 動的SQLのコロンの検索について

Tsunakawa, Takayuki tsunakawa.takay @ jp.fujitsu.com
2013年 6月 7日 (金) 14:27:51 JST


綱川といいます。

> From: pgsql-jp-bounces @ ml.postgresql.jp
> 画面系の処理(JAVA)用にPostgresDBアクセス用のAPIを用意している。
> APIは、ECPG(.pgc)で作成している。
> 画面での検索条件を動的SQLで組み立てている。
> (prepare/declare/open cursor/fetch/close cursor)
> 
> 検索する文字列に「:(コロン)」を指定するとエラーとなり、
> シングルコーテーションで括ったら、エラーは発生しなくなったが
> 正しく検索できない状況です。
> 
> 【検索文字列】
> AAA:BBB
> 
> 【修正前】
> Searchbuf='Select a,b,c from table_Z where d = AAA:BBB ' ;
> ⇒DB登録済のコロンを含まない文字列は検索可
> ⇒DB登録済のコロンを含む文字列はエラー発生
> 
> 【修正後】
> Searchbuf='Select a,b,c from table_Z where d = 'AAA:BBB' ' ;
> ⇒DB登録済のコロンを含まない文字列は検索データなし
> ⇒DB登録済のコロンを含む文字列は検索データなし(エラー未発生)
> 
> 【想定】
> コロン(:)でホスト変数と判断してしまっているのか正しく検索できていませ
> ん。
> 事例等ありましたら、ご教授いただきたい。
> 
> ※不足情報があれば教えてください。

ECPGということは、C言語でDBアクセス処理を書いており、
searchbufはchar型の配列だと思います。
そうであれば、次のように、外側の'を"にする必要があります。
おためしください。

Searchbuf="Select a,b,c from table_Z where d = 'AAA:BBB'";



以上です。


pgsql-jp メーリングリストの案内