【问题标题】:Wrong quantity or types of arguments error while using dbms_output.put_line in Oracle PL/SQL在 Oracle PL/SQL 中使用 dbms_output.put_line 时出现错误数量或类型的参数错误
【发布时间】:2011-12-16 17:10:41
【问题描述】:

我对命令dbms_output.put_line() 有疑问。

我有一个变量pres_name,我想在屏幕上打印该值。因此我使用dbms_output.put_line(),但该命令不接受这种类型的变量,但我发现所有网站都使用它,如dbms_output.put_line(varchar variable)。 但我收到了这个警告:

Fehler(15,5): please-00306: Aufruf von 'PUT' 中的 Falsche Anzahl oder Typen von Argumenten

英文:

调用 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:代码还不完善。

【问题讨论】:

  • 你也在输入varchar吗?你只需要dbms_output.put_line(your_variable)。先试试更简单的:dbms_output.put_line('hello, world')
  • 不写正确,如果我写一个文本作为参数,命令就可以工作

标签: sql oracle plsql oracle-sqldeveloper


【解决方案1】:
<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 循环的游标会隐式地为您打开和关闭游标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多