比如说你查一个人员表,在会话中会出现一个根据id查询的会话,但是这个id总是1,跟我传进程序的id不一样,比如说我要查询id=20的用户信息,会话中的sql语句应该是SELECT userName,age,sex FROM oauser.userInfo WHERE id = :20, 但是我看oracle会话中的那个sql语句却是 SELECT userName,age,sex FROM oauser.userInfo WHERE id = :1,
会话中的sql语句中的id应该是我传递的参数才对啊,为什么会出现这样的事情呢,哪位高手能给解释下,谢谢了
会话中的sql语句中的id应该是我传递的参数才对啊,为什么会出现这样的事情呢,哪位高手能给解释下,谢谢了
SELECT userName,age,sex FROM oauser.userInfo WHERE id = 20;
系统把这个sql解析成了
SELECT userName,age,sex FROM oauser.userInfo WHERE id = :11前面有个冒号,是绑定变量的意思,也就是说20被替换成了一个变量所以,无论你用下面的哪个sql,
SELECT userName,age,sex FROM oauser.userInfo WHERE id = 20;
SELECT userName,age,sex FROM oauser.userInfo WHERE id = 21;
SELECT userName,age,sex FROM oauser.userInfo WHERE id = 22;
SELECT userName,age,sex FROM oauser.userInfo WHERE id = 23;
最终系统都解析成了同一个sql