お世話になっております。 A.中村です。 On Fri, 5 Nov 1999 17:16:22 +0900 Yoshida Masato <yoshidam / yoshidam.net> wrote: > > cursor.parse("select * from emp where job='CLERK' ") > > cursor.exec > > > > ってやるとテーブルの望んだ行が検索されるんですが > > > > cursor.parse("select * from emp where job=:a ") > > cursor.bindrv(":a", "CLERK") > > cursor.exec > > > > ってやると一行も検索されてきません。 > require 'oracle' > > conn = ORAconn.logon("scott", "tiger", "") > cursor = conn.open > cursor.parse("select * from emp where job=:a ") > cursor.bindrv(":a", "CLERK") > cursor.exec > while r = cursor.fetch > p r > end > cursor.close > conn.logoff あ。劇的にミスっていました。 JOBの定義がCHAR(9)だったので、DBの中のデータは "CLERK"ではなくて "CLERK "となっていました。 なので、sqlを "select * from emp where RTRIM(JOB) = :a" とする(右のspaceを削る)と、解決しました。 失礼しました。 #あ。ってことは、RDBC-Oracleのトリアエズ版が出来た。 しかし微妙にヘンですね。 cursor.parse("select * from emp where (job) = 'CLERK' ") はイケルのに cursor.parse("select * from emp where RTRIM(JOB) = :a ") cursor.bindrv(":a", "CLERK") からRTRIM関数を取ったらイケナイんですね。 逆に cursor.parse("select * from emp where RTRIM(JOB) = :a ") cursor.bindrv(":a", "CLERK ") これがイケルようだし。 いずれにせよ、このへんの挙動の差って、Ruby側じゃなくて Oracleサーバー側の仕様ですよねえ?(^^; #さて次はgetParamかな。