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