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.
直接说明您的代码存在的问题:
- 没有
IF EXISTS
。参见 conditional statements。
- 需要设置变量 in their own statement,而不是另一个 select 的一部分。
如果我不得不冒险猜测您要做什么,也许是这样的?
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;
我有一个日志记录 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.
直接说明您的代码存在的问题:
- 没有
IF EXISTS
。参见 conditional statements。 - 需要设置变量 in their own statement,而不是另一个 select 的一部分。
如果我不得不冒险猜测您要做什么,也许是这样的?
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;