2011-12-16 96 views
0

我遇到命令dbms_output.put_line()的問題。在Oracle PL/SQL中使用dbms_output.put_line時錯誤的參數數量或類型錯誤

我有一個變量pres_name,我想打印在屏幕上的值。因此我使用dbms_output.put_line(),但命令不接受這種類型的變量,但我發現他們使用它的所有網站都像dbms_output.put_line(varchar variable)。 但我得到這樣的警告:

Fehler(15,5):請-00306:Falsche Anzahl奧德力typen馮Argumenten在Aufruf馮 '把'

英文:

調用put的錯誤數量或參數類型

我使用Oracle sql developer。

代碼:

create or replace 
procedure ex10_1 
(
pr_name varchar 
) 
as 
cursor pres is select vice_pres_name from admin_pr_vp; 
begin 
    open pres; 
    for pr_name in pres loop 
    dbms_output.put_line(pr_name); 
    end loop; 
end; 

PS:該代碼是不是很完美。

+0

你是否也輸入`varchar`?你只需要`dbms_output.put_line(your_variable)`。首先嚐試一個更簡單的事情:`dbms_output.put_line('hello,world')`。 – 9000 2011-12-16 17:19:20

回答

5
<snip> 
for pr_name in pres loop 
    dbms_output.put_line(pr_name); 
end loop; 
<snip> 

在PL/SQL一個cursor for loop隱式聲明循環變量是一個記錄類型匹配所述光標的行。所以,在循環內pr_name是一個單一字段的記錄,vice_pres_name。該字段的類型爲vice_pres_name%TYPE。內部pr_name影響外部pr_name參數。 DBMS_OUTPUT.PUT_LINE採用varchar2,PL/SQL無法隱式轉換pr_name記錄。

下面是用for循環的光標和記錄語法打印由遊標返回的值的例子匿名:

SQL>  declare 
    2   cursor pres is select 'A' as vice_pres_name 
    3    from dual union all select 'B' from dual; 
    4  begin <<ex10_1>> 
    5   for pr_name in pres loop 
    6    dbms_output.put_line(pr_name.vice_pres_name); 
    7   end loop; 
    8  end ex10_1; 
    9/
A 
B 

PL/SQL procedure successfully completed. 

還要注意,for循環光標暗示打開和關閉光標您。

相關問題