Oracle PLS-00103:在预期以下情况时遇到符号“执行”:

Oracle PLS-00103:在预期以下情况时遇到符号“执行”:,oracle,Oracle,有人能告诉我代码中哪里有问题吗 SET SERVEROUTPUT ON; daclare sql_stmt varchar(500); n number(3); n :=0; begin FOR vori IN (select ri from voucher_p1 where vchstate=chr(4)) LOOP sql_stmt := 'select count(sernum) from voucher_p1 wh

有人能告诉我代码中哪里有问题吗

SET SERVEROUTPUT ON;
    daclare 
    sql_stmt varchar(500);
    n number(3);
    n :=0;
    begin
    FOR vori IN (select ri from voucher_p1 where vchstate=chr(4))
    LOOP
        sql_stmt := 'select count(sernum) from voucher_p1 where ENCPIN in ( select ENCPIN from voucher_p1 where ri=' || vori.ri || ')'
        EXECUTE immediate sql_stmt into n;
        DBMS_OUTPUT.PUT_LINE( 'Column Variable: ' || n );
    END LOOP;
    end;
    /
我在oracle 9.2.0中运行它,它会按如下方式重新发送此消息:

EXECUTE immediate sql_stmt into n;
*
ERROR at line 5:
ORA-06550: line 5, column 1:
PLS-00103: Encountered the symbol "EXECUTE" when expecting one of the
following:
. ( * @ % & = - + ; < / > at in is mod not rem
<an exponent (**)> <> or != or ~= >= <= <> and or like
between ||

我跑得很好。谢谢大家

SET SERVEROUTPUT ON;
declare 
sql_stmt varchar2(500);
n number(3);
begin
FOR vori IN (select ri from voucher_p1 where vchstate=chr(4))
LOOP
    DBMS_OUTPUT.PUT_LINE('select count(*) from voucher_p1 where ENCPIN in ( select ENCPIN from voucher_p1 where ri=' || vori.ri || ')');
    sql_stmt := 'select count(*) from voucher_p1 where ENCPIN in ( select ENCPIN from voucher_p1 where ri=' || vori.ri || ')';
    EXECUTE immediate sql_stmt into n;
    DBMS_OUTPUT.PUT_LINE(n);
END LOOP;
end;
/

打开服务器输出;daclare sql_stmt varchar500;n数3;n:=0;从凭证中选择ri开始,其中vchstate=chr4循环sql\u stmt:=“从凭证中选择countsernum,其中ENCPIN从凭证中选择ENCPIN,其中ri=”| | vori.ri |立即执行sql\u stmt到n;DBMS_OUTPUT.PUT_LINE'列变量:'|| n;端环;完;这是我的代码Declare而不是Daclare在立即执行之前,您的行中缺少一个分号for循环和我直接运行时有什么不同?我犯了什么错误?