【问题标题】:pls-00306 error when trying to print output尝试打印输出时出现 pls-00306 错误
【发布时间】:2021-04-27 12:58:25
【问题描述】:

此代码块在调用“put_line”时返回错误 pls-00306 错误数量或类型的参数:

SET SERVEROUTPUT ON
DECLARE  
   ch varchar2(16);
   cursor ebs_user_cur 
   is
   select xmlagg(xmlelement("r", ch)).extract('//text()').getstringval() 
from
(
  select distinct first_value(ch) over (partition by lower(ch))  
  from (
    select substr('abcd#efghijklmn#pqrstuvwxyzABC$DEFGHIJK$LMNPQR!STUVWXYZ1!23456789',
        level, 1)  ch
    from dual 
    connect by level <= 59
    order by dbms_random.value
  )
  where rownum <= dbms_random.value(18,18)
);
l_passwd   ebs_user_cur%ROWTYPE;
BEGIN
open ebs_user_cur;
loop
fetch ebs_user_cur into l_passwd;
DBMS_OUTPUT.PUT_LINE(l_passwd);
EXIT WHEN l_passwd%NOTFOUND;
END LOOP;
close ebs_user_cur;
END;

哪里出错了?

谢谢

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:
    1. 您应该在光标中指定列别名
    2. 您应该在l_passwd.{field_name} 中指定准确的字段名称:
    SET SERVEROUTPUT ON
    DECLARE  
       ch varchar2(16);
       cursor ebs_user_cur 
       is
       select xmlagg(xmlelement("r", ch)).extract('//text()').getstringval() 
        as res -- <<< see here
        from
        (
          select distinct first_value(ch) over (partition by lower(ch))  
          from (
            select substr('abcd#efghijklmn#pqrstuvwxyzABC$DEFGHIJK$LMNPQR!STUVWXYZ1!23456789',
                level, 1)  ch
            from dual 
            connect by level <= 59
            order by dbms_random.value
          )
          where rownum <= dbms_random.value(18,18)
        );
        l_passwd   ebs_user_cur%ROWTYPE;
    BEGIN
      open ebs_user_cur;
      loop
        fetch ebs_user_cur into l_passwd;
        DBMS_OUTPUT.PUT_LINE(l_passwd.res); -- <<< .res here
        EXIT WHEN l_passwd%NOTFOUND;
      END LOOP;
      close ebs_user_cur;
    END;
    

    【讨论】:

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