日期:2014-05-16  浏览次数:20888 次

oracle 存储过程参数与变量的问题
借保地提一个小弟碰到的一个奇怪的问题。
问题如下:
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.aiyiweb.com/oracle-develop/177537.html