数学建模社区-数学中国

标题: 在ora9以上一个极易出错的sql写法。 [打印本页]

作者: 矩阵中的小萝卜    时间: 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'了。这样虽然不报错,但是违反本意了。6 k0 x% i& m9 U6 L
[此贴子已经被作者于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>




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5