比如说你查一个人员表,在会话中会出现一个根据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应该是我传递的参数才对啊,为什么会出现这样的事情呢,哪位高手能给解释下,谢谢了

解决方案 »

  1.   

    你自己用的是
    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
      

  2.   

    你得意思是不管你id传递什么, 会话中的这个sql语句都是 SELECT userName,age,sex    FROM oauser.userInfo    WHERE id = :1 的吗?谢谢