我试图在IF条件中使用游标FOR循环,但出现错误。以下是详细信息:
OPEN c_tab_var FOR v_sql;
Loop
fetch c_tab_var into v_cur_inv_var;
exit when c_tab_var%notfound;
For v_cur_bde IN
(
SELECT DISTINCT BDE.col1, BDE.col2
FROM tab BDE
ORDER BY BDE.col1, BDE.col2, BDE.col3....
)
LOOP
If v_cur_bde.col1 = v_cur_inv_var.col1 AND v_cur_bde.col2 = v_cur_inv_var.col2 THEN
(
FOR v_cur_var IN
(
SELECT.....
)
LOOP
-
-
-
)
ELSE
(
-
-
-
)
END IF;下面是我得到的错误:
过程ABC的编译错误
错误: PLS-00103:在需要以下内容之一时遇到符号"FOR“:
( - + case mod new not null <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
continue avg count current exists max min prior sql stddev
sum variance execute forall merge time timestamp interval
date <a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
<an alternatively-quoted string literal with character set specification>
<an alternative第: 57行文本:用于v_cur_var IN
错误: PLS-00103:在需要以下内容之一时遇到符号")“:
( begin case declare end exception exit for goto if loop mod
null pragma raise return select update while with
<an identifier> <a double-quoted delimited-identifier>
<a bind variable> << continue close current delete fetch lock
insert open rollback savepoint set sql execute commit forall
merge pipe purge行: 210文本:)
任何帮助都将非常感谢!
发布于 2014-03-11 19:56:58
好吧,你有一大堆语法错误。你开始了三个循环,但是没有一个“结束循环”。
我能得到的最接近没有语法错误的东西是:
开始打开v_sql的c_tab_var;
循环将c_tab_var提取到v_cur_inv_var中;
当c_tab_var%NOTFOUND时退出;对于v_cur_bde IN ( SELECT DISTINCT BDE.col1,BDE.col2 FROM选项卡BDE ORDER BY BDE.col1,BDE.col2,BDE.col3)循环IF v_cur_bde.col1 = v_cur_inv_var.col1和v_cur_bde.col2 = v_cur_inv_var.col2 THEN FOR v_cur_var IN (SELECT 1 FROM DUAL) --为该循环添加select语句NULL;--做一些事情结束循环;否则为NULL;--做其他事情结束如果;结束循环;结束循环;结束;
但是,如果不了解上下文,就不可能正确回答这个问题
https://stackoverflow.com/questions/22290226
复制相似问题