2016-11-07 140 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

相關問題