2016-11-07 120 views
-2
declare 
sd varchar2(30); 
v1 number(3,2); 
v2 number(3,2); 
b1 number(3,2); 
b2 number(3,2); 
b3 number(3,2); 
b4 number(3,2); 
b5 number(3,2); 
b6 number(3,2); 
b7 number(3,2); 

begin 
sd:='secondary education'; 
execute academics_data(sd,v1,v2,b1,b2,b3,b4,b5,b6,b7); 
dbms_output.put_line('values are: v1='||v1||' v2='||v2||' b1='||b1||' b2='||b2||' b3='||b3||' b4='||b4||' b5='||b5||' b6='||b6); 
end; 

我想用存储过程执行上述PLSQL块。但是错误如下。无法使用输入和输出参数执行存储过程

从命令行1开始的错误:declare sd varchar2(30); (3,2); v1 (3,2); v2数字(3,2); b1号码(3,2); b2号码(3,2); b3 number(3,2); b4号码(3,2); b5号码(3,2); b6号码(3,2); b7 number(3,2);

begin sd:='secondary education';执行 academics_data(sd,v1,v2,b1,b2,b3,b4,b5,b6,b7); dbms_output.put_line('values is:v1 ='|| v1 ||'v2 ='|| v2 ||'b1 ='|| b1 ||' b2 ='|| b2 ||'b3 ='| | b3 ||'b4 ='|| b4 ||'b5 ='|| b5 ||'b6 ='|| b6);结束;错误 报告:ORA-06550:第15行,第9列:PLS-00103:在期待以下某项时遇到 符号“ACADEMICS_DATA”:

:=。 (@%; immediate)符号“:=”替换为 “ACADEMICS_DATA”继续。 06550. 00000 - “行%s,列%s:\ n%s” *原因:通常是PL/SQL编译。错误 *操作:

+0

删除'execute' – Aleksej

+0

是的,这是正确的。谢谢Aleksej! – Darla

+0

注意你没有在'dbms_output.put_line'前面放置'execute'。这只是另一个过程(恰巧由Oracle提供),所以你可以用同样的方式调用它们。 –

回答

3

调用的语法错误在PL/SQL块,你不使用execute命令 - 这是仅在SQL * Plus命令行中使用重写你的块作为。 :

declare 
    sd varchar2(30); 
    v1 number(3,2); 
    v2 number(3,2); 
    b1 number(3,2); 
    b2 number(3,2); 
    b3 number(3,2); 
    b4 number(3,2); 
    b5 number(3,2); 
    b6 number(3,2); 
    b7 number(3,2); 
begin 
    sd:='secondary education'; 
    academics_data(sd,v1,v2,b1,b2,b3,b4,b5,b6,b7); 
    dbms_output.put_line('values are: v1='||v1||' v2='||v2||' b1='||b1||' b2='||b2||' b3='||b3||' b4='||b4||' b5='||b5||' b6='||b6); 
end; 

最好的运气

+0

这是正确的,它工作。谢谢鲍勃! – Darla