PL/SQL变量命名最好不要和静态sql里的字段名称相同
以前没怎么学过PL/SQL,最近要写几个存储过程,于是就参照官方文档写了起来,原本以为简单的几个存储过程,折腾了一天,一直被一个问题纠结:
当时写了个function , 放在一个 package里面 方法里面的内容跟下面等价:
declare
customer_tname varchar2(40):='xxxxxxxxxxxxxxxxxx';
v_cust_tid varchar2(40); --数据模版ID
begin
select ct.CUSTOMER_TID
into v_cust_tid
from TBL_CUSTOMER_TEMPLATES ct
where ct.CUSTOMER_TNAME = customer_tname;
dbms_output.put_line(v_cust_tid);
end;
编译是没问题的,但执行时就报错,说返回了不止一行,我在数据库里根据条件查询了一下,确实只有一行,非常纳闷!
后来几经调整,才发现是由于我声明的变量名称和我查询条件里的字段名称一样了,将声明里的变量名称改变一下后就好了
本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!