[20240925]toad编写sql参数替换的问题.txt
--//写一个复杂sql语句在toad下调试,主要原因toad下可以很好的格式化sql语句,这样调试容易发现问题。
--//问题主要集中在参数替换上,通过例子说明。
--//toad 版本 12.7.0.121
--//在sqlplus下:
SCOTT@book01p> define 1=12
SCOTT@book01p> select &1 , &1+1 from dual ;
12 12+1
---------- ----------
12 13
--//没有任何问题。
--//但是在toad下:
--//第1次执行,带入12.
old: select &1 , &1+1 from dual
new: select 12 , 12+1 from dual
12 12+1
---------- ----------
12 13
已选择 1 行。
--//测试正确!!
--//第2次执行,带入13.
old: select &1 , &1+1 from dual
new: select 13 , 12+1 from dual
13 12+1
---------- ----------
13 13
已选择 1 行。
--//测试错误。你可以发现第2次执行第2个参数&1还是12.
--//实际上在执行时弹出变量赋值时仅仅给第1个赋值,第2个没有选中还是原来的旧值。
--//在赋值界面上出现&1(0),&1(1),如果没有选中&1(1)就会出现上面的错误,选中就不会出现上面的错误。
--//如果脚本出现&1多次,每一次都需要选中是一件很繁琐的操作。
--//有1个简单的修改方法就是使用2个&&,这样可以规避上面的情况,改写如下:
select &&1 , &&1+1 from dual ;
--//赋值界面上仅仅出现&&1,就不会出现前面的错误,也就是toad参数替换最好使用2个&代替1个&。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3034311/ ,如需转载,请注明出处,否则将追究法律责任。