SQL 中的语法错误 (IF / EXISTS / CASE / THEN)

Syntax error in SQL (IF / EXISTS / CASE / THEN)

我有一个日志记录 table,我需要根据以下条件在其中插入状态和备注。

IF EXISTS (SELECT CASE
    WHEN COUNT(A)=COUNT(*))
    THEN --  table has no issues
        STATUS := 'C'
        REMARKS := 'Procedure Completed'
    ELSE -- table has issues
        STATUS := 'F'
        REMARKS := 'Validation Failed'
        END
        FROM table x;
    END IF;

执行此操作时出现错误:

'SELECT  EXISTS (SELECT CASE WHEN COUNT(dISTINCT A)=COUNT(*))'
error found ")" (at char 75) expecting `AND' or `AT' or `BETWEEN' or `IN' or `IS'

注意:-此过程是 NETEZZA 中存储过程的一部分

我不确定您是否真的在这里问问题,但如果您的问题是 "Why am I getting this error?" 那么答案是您没有使用 nzplsql 语法。你上面写的存储过程看起来更像plsql,而不是nzplsql。我建议您通读 correct syntax.

直接说明您的代码存在的问题:

如果我不得不冒险猜测您要做什么,也许是这样的?

sql := 'select 1 from table x having count(a) = count(*);';
execute immediate sql;

if ROWCOUNT = 1 then
  status := 'C';
  remarks := 'Procedure Completed';
else
  status := 'F';
  remarks := 'Validation Failed';
end if;