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

来源:互联网 发布:美姿堂专业彩妆护淘宝 编辑:程序博客网 时间:2024/06/12 10:38

今天写存储过程,有一块是要根据传入的参数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是一样的了,未起到限制作用,就查出了多条记录。

0 0
原创粉丝点击