oracle 存储过程中变量名和表的字段名同名时,优先将字段名当做表的字段名

今天写存储过程,有一块是要根据传入的参数SFZJH查出学生的ID和XM赋值给变量XSID和XSXM。SQL如:

SELECT ZXS.ID,ZXS.XM INTO XSID,XSXM_ FROM ZZ_ZXS_JBXXLS ZXS WHERE ZXS.SFZJLX = '1' AND ZXS.SFZJH = SFZJH AND ZXS.ZZ_XX_JBXX_ID = XXID;

我将SFZJH修改成具体的数字,执行sql查出一条数据,但是在存储过程执行,却总是报错:返回的记录数和期望的记录数,不一致。自己左思右想也不明其究,最后咨询一个有经验的同事,原来oracle数据库的存储过程里,如果变量名和表的字段名相同了,会优先当做字段名来看待。这样SQL里的条件ZXS.SFZJH=SFZJH其实就和1=1是一样的了,未起到限制作用,就查出了多条记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值