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

时间:2015-12-24 16:36:32

标签: sql netezza

我有一个记录表,我需要根据下面的条件插入状态和备注。

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中商店过程的一部分

1 个答案:

答案 0 :(得分:1)

我不确定你实际上是在问这个问题,但如果你的问题是“我为什么会收到这个错误?”那么答案是你没有使用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; 。见conditional statements
  • 需要设置变量in their own statement,而不是另一个选择的一部分。

如果我不得不猜测你想要做什么,也许是这样的事情?

Upload()