簡體   English   中英

dbms輸出函數的PL / SQL過程錯誤

[英]PL/SQL Procedure Error by dbms output function

我有以下任務:“編寫一個打印兄弟姐妹過程(p個人),該過程具有來自家族樹計划的該人的姓名或ID作為輸入,並因此輸出兄弟姐妹列表。”

表關系,包含一個人的后繼者(Nachfolger)和前任者(Vorgänger)的信息。 表關系

我的程序如下:

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會收到以下錯誤消息:

錯誤(14,22):PLS-00306:對“ ||”的調用中參數的數量或類型不正確

我無法理解為什么它不起作用。 我使用了一個顯式游標來處理我得到多於1行的問題,但行不通。

更改:

dbms_output.put_line('geschwister' || v_geschwister);

至:

dbms_output.put_line('geschwister' || v_geschwister.nachfolger);

這是您程序的新版本(清潔程序/壓縮程序)。 我們在這里獲得表關系的所有列:

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM