PL/SQL dbms 输出函数的过程错误
PL/SQL Procedure Error by dbms output function
我有以下任务:
"Write a Print Siblings procedure (p person) that has as input the name or ID of the person from the family tree scheme and, as a result, outputs the list of siblings."
Table 包含一个人的继任者(Nachfolger)和前任(Vorgänger)信息的关系。
Table Relations
我的程序如下:
create or replace procedure PrintSiblings4(p_Person varchar2)
is
cursor c_geschwister is select nachfolger
from relations
where nachfolger != p_Person and vorgänger =
(select vorgänger from relations
Where nachfolger = p_Person and rownum = 1) ;
v_geschwister c_geschwister%rowtype;
begin
open c_geschwister;
loop
fetch c_geschwister into v_geschwister;
exit when c_geschwister%NOTFOUND;
dbms_output.put_line('geschwister' || v_geschwister);
end loop;
end;
如果我编译过程,sqldeveloper 会收到以下错误消息:
Error (14,22): PLS-00306: Incorrect number or types of arguments in
call to '||'
我不明白为什么它不起作用。我使用显式游标来处理我得到超过 1 行的问题,但它不起作用。
变化:
dbms_output.put_line('geschwister' || v_geschwister);
至:
dbms_output.put_line('geschwister' || v_geschwister.nachfolger);
这里是您的程序的新 (cleaner/compacter) 版本。我们在这里得到 table 关系的所有列:
create or replace procedure print_siblings4(p_person varchar2)
is
cursor c_geschwister is
select *
from relations
where nachfolger != p_person
and vorgänger =
(
select vorgänger
from relations
where nachfolger = p_person
and rownum = 1
)
;
begin
for r_geschwister in c_geschwister loop
dbms_output.put_line('geschwister' || v_geschwister.nachfolger);
end loop;
end;
我有以下任务: "Write a Print Siblings procedure (p person) that has as input the name or ID of the person from the family tree scheme and, as a result, outputs the list of siblings."
Table 包含一个人的继任者(Nachfolger)和前任(Vorgänger)信息的关系。 Table Relations
我的程序如下:
create or replace procedure PrintSiblings4(p_Person varchar2)
is
cursor c_geschwister is select nachfolger
from relations
where nachfolger != p_Person and vorgänger =
(select vorgänger from relations
Where nachfolger = p_Person and rownum = 1) ;
v_geschwister c_geschwister%rowtype;
begin
open c_geschwister;
loop
fetch c_geschwister into v_geschwister;
exit when c_geschwister%NOTFOUND;
dbms_output.put_line('geschwister' || v_geschwister);
end loop;
end;
如果我编译过程,sqldeveloper 会收到以下错误消息:
Error (14,22): PLS-00306: Incorrect number or types of arguments in call to '||'
我不明白为什么它不起作用。我使用显式游标来处理我得到超过 1 行的问题,但它不起作用。
变化:
dbms_output.put_line('geschwister' || v_geschwister);
至:
dbms_output.put_line('geschwister' || v_geschwister.nachfolger);
这里是您的程序的新 (cleaner/compacter) 版本。我们在这里得到 table 关系的所有列:
create or replace procedure print_siblings4(p_person varchar2)
is
cursor c_geschwister is
select *
from relations
where nachfolger != p_person
and vorgänger =
(
select vorgänger
from relations
where nachfolger = p_person
and rownum = 1
)
;
begin
for r_geschwister in c_geschwister loop
dbms_output.put_line('geschwister' || v_geschwister.nachfolger);
end loop;
end;