动态SQl中用using传递参数 下边这种写法对吗?
execute immediate 'select * from 表 where 字段1 = :1 and 字段2 = :1'
        using '1';
还是说 必须写成:
execute immediate 'select * from 表 where 字段1 = :1 and 字段2 = :2'
        using '1','1'
我的动态SQL里边 很多地方都用到了同一个参数,用一次 就得在using后边加一个吗?Oracle动态SQLusing

解决方案 »

  1.   

    动态SQL语句中的占位符与USING子句中的绑定参数是位置关联的,而不是名称关联。所以,如果在SQL语句中同样的占位符出现两次或多次,那么,它的每次出现都必须与一个USING子句中的绑定参数相关联。
      

  2.   

    肯定要写成第二种了。如果你的参数是固定值,可以直接execute immediate 'select * from 表 where 字段1 = ''1'' and 字段2 = ''1'''
      

  3.   

    但是,动态PL/SQL块中只有唯一的占位符才与USING子句中的绑定参数按位置对应。所以,如果一个占位符在PL/SQL块中出现两次或多次,那么所有这样相同的占位符都只与USING语句中的一个绑定参数相对应。