借保地提一个小弟碰到的一个奇怪的问题。
问题如下:
create or replace produre a(id in varchar2) is
r1 number;
r2 number;
r3 number;
tmp varchar2(20);
sqlstr varchar2(200);
begin
tmp:=id;
select count(1) into r1 from t1 where t1.id=id;
select count(2) into r2 from t1 where t1.id=tmp;
sqlstr:='select count(2) from t1 where t1.id=:tmp';
execute immediate sqlstr into r3 using id;
end;
程序运行结果如下:
r2,r3等于实际满足条件的行数
r1却始终等于表内数据的总行数
测试环境为:oracle10G
那位达人能解释一下吗?存储过程输入参数和内部的变量有什么区别呢(不要只说一个只读之类哈)?
------解决方案--------------------
- SQL code
--這句話的意思最後的id系統會認為是列的id,而不是你參數的id--你把參數換為p_id就不會是所有的了select count(1) into r1 from t1 where t1.id=id;
代码迷推荐解决方案:oracle存储过程,http://www.daimami.com/search?q=177537