矩阵中的小萝卜 发表于 2006-12-21 12:50

在ora9以上一个极易出错的sql写法。

在ora9以上一个极易出错的sql写法。在oracle 7中,如果这样, declare v_start varchar2(7); v_end varchar2(7); v_nbr varchar2(7); begin v_start:='0000010'; v_end:='0000029'; FOR v_nbr IN v_start..v_end LOOP insert into temp_shen values (v_nbr); --temp_shen的字段在库中也是 varchar2 end loop; end; 会报错。说变量v_start有错。而在oracle9和10中,就不报错了,就直接将v_start转化成number型--10。而赋值时,也默认转成'10'了。这样虽然不报错,但是违反本意了。
[此贴子已经被作者于2006-12-21 14:52:05编辑过]

madio 发表于 2006-12-21 13:25

<p>就是说for的上下界的变量必须为数值型!有比较字符串的正确写法吗?</p>

矩阵中的小萝卜 发表于 2006-12-21 14:55

<p>怎么都到一起去了,我加换行符了。</p><p>我也不会很好的办法。</p><p>一般都是用辅助的方法:限定长度,‘0000’||v_nbr等等。</p><p>其实,between ‘20’&nbsp;and ‘40’下列数据:</p><p>1,21,222,3,40</p><p>最后也会查出21,222,3,40。只好限定长度了</p>
页: [1]
查看完整版本: 在ora9以上一个极易出错的sql写法。