使用where子句中的Dynamic输入在Oracle中执行查询

时间:2017-09-12 12:13:09

标签: oracle

我有DEPT(DEPTNO,DNAME,LOC)表和一些数据。

我想查询所有搜索键为DNAME的部门。

我正在尝试类似下面的内容,但不能正常工作。任何人都可以建议我。我是oracle的新手。

dynamicDeptName varchar2(30):= 'cco';
execute immediate 'select * from dept where dname like '%' || dynamicDeptName || '%'

1 个答案:

答案 0 :(得分:2)

  1. 使用绑定变量,它更容易,更好(更高效,更安全)

  2. 单引号需要在单引号字符串中加倍。

  3. 示例:

     execute immediate
       'select * from dept where dname like ''%'' || :dname || ''%'''
       into dept_rec
       using dynamicDeptName;
    

    或者使用q-quote语法以避免需要加倍引号:

    execute immediate 
      q'[select * from dept where dname like '%' || :dname || '%']'
       into dept_rec
      using dynamicDeptName;
    
相关问题