在 Oracle PL/SQL 中使用 dbms_output.put_line 时出现错误数量或类型的参数错误
我在使用 dbms_output.put_line()
命令时遇到问题。
我有一个变量 pres_name
,我想在屏幕上打印该值。因此,我使用 dbms_output.put_line() ,但该命令不接受这种类型的变量,但我发现的所有网站都像 dbms_output.put_line(varchar variable) 一样使用它。 但我收到这个警告:
Fehler(15,5):please-00306:Falsche Anzahl oder Typen von Argumenten in Aufruf von 'PUT'
英语:
调用 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:代码还不完善。
I have a problem with the command dbms_output.put_line()
.
I have a variable pres_name
and I would like to print the value on the screen. Therefore I use dbms_output.put_line()
but the command doesn't accept this type of Variable but all sites that I found they use it like dbms_output.put_line(varchar variable)
.
But I get this warning:
Fehler(15,5): please-00306: Falsche Anzahl oder Typen von Argumenten in Aufruf von 'PUT'
In English:
wrong quantity or types of arguments on the invocation of put
I use Oracle sql developer.
The code:
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: the code is not perfect yet.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 PL/SQL 中,循环游标隐式声明循环变量是与光标行匹配的记录类型。因此,循环内的
pr_name
是一条具有单个字段vice_pres_name
的记录。该字段的类型为vice_pres_name%TYPE
。此内部pr_name
遮蔽了外部pr_name
参数。 DBMS_OUTPUT.PUT_LINE 采用 varchar2,并且 PL/SQL 无法隐式转换pr_name
记录。下面是一个匿名示例,它使用游标 for 循环和记录语法来打印游标返回的值:
另请注意,游标 for 循环会隐式为您打开和关闭游标。
In PL/SQL a cursor for loop implicitly declares the loop variable to be a record type matching a row of the cursor. So, within the loop
pr_name
is a record with a single field,vice_pres_name
. That field has typevice_pres_name%TYPE
. This innerpr_name
shadows the outerpr_name
argument. DBMS_OUTPUT.PUT_LINE takes a varchar2 and PL/SQL is not able to implicitly convert thepr_name
record.Here is an example anonymous that uses an cursor for loop and the record syntax to print the values returned by a cursor:
Also note, that a cursor for loop implicitly opens and closes the cursor for you.