Oracle PL/SQL 查询无法编译

Posted

技术标签:

【中文标题】Oracle PL/SQL 查询无法编译【英文标题】:Oracle PL/SQL query does not compile 【发布时间】:2015-02-05 12:52:40 【问题描述】:

谁能告诉我为什么这不会编译?我收到“缺少表达式”错误:

execute immediate  'select CASE WHEN EXISTS ( SELECT 1 from samples where samplecode = :samplecode  and auditflag = 0 and ' || varFilterString || ') then 1 else 0 end  from DUAL'
into varResult
using varSampleCode;

假设所有变量都正确声明。

TIA

【问题讨论】:

检查您的 varFilterString ,它可能格式错误。具体来说,它可能是 Null。 Oracle query won't compile 的可能重复项 【参考方案1】:
execute immediate  'select  count(1) from DUAL
                      where EXISTS
                       ( SELECT 1 from samples
                        where samplecode = :sample code
                          and auditflag = 0 
                          and ' || varFilterString || ')'
into varResult
using varSampleCode;

【讨论】:

谢谢,编译成功了。

以上是关于Oracle PL/SQL 查询无法编译的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 执行动态语句

oracle静态sql和动态sql

ORACLE PL/SQL:使用多个参数调用存储过程函数(DML 查询)

ORACLE PL/SQL 在查询 3 列信息时出现存储过程错误

在 Oracle 11g2 XE 中编译 PL/SQL 函数有时会导致 ORA-00600:内部错误

在 Oracle PL/SQL 中创建触发器时如何解决“编译错误成功”错误?