显示PLSQL中的所有对象值

时间:2018-11-14 00:13:59

标签: oracle plsql

我正在尝试显示对象中的所有值,但它给我“必须声明”错误。

我尝试了下面的代码,但仍然给我同样的错误。

declare
      outN mytype;
begin
      outN:= get_data();
      dbms_output.put_line(outN.toString);
      -- tried this as well
      dbms_output.put_line(outN.ID);
      dbms_output.put_line(outN.G);
      dbms_output.put_line(outN.GES);
      dbms_output.put_line(outN.CC);
      dbms_output.put_line(outN.RR);

end;

我的对象是:

 create or replace TYPE           "mytype"
    AS OBJECT
    (
        "ID" NUMBER(10),
        "G" NUMBER(10),
        "GES"  VARCHAR(100 BYTE),
        "CC" NUMBER(10),
        "RR" VARCHAR(100 BYTE)
    );

错误:

  

错误报告-       ORA-06550:第5行,第38列:       PLS-00302:必须声明组件“ ID”       ORA-06550:第5行,第7列:       PL / SQL:语句被忽略       ORA-06550:第6行,第38列:       PLS-00302:必须声明组件“ G”       ORA-06550:第6行,第7列:       PL / SQL:语句被忽略       ORA-06550:第7行,第38列:       PLS-00302:必须声明组件“ GES”       ORA-06550:第7行,第7列:       PL / SQL:语句被忽略       ORA-06550:第8行,第38列:       PLS-00302:必须声明组件“ CC”       ORA-06550:第8行,第7列:       PL / SQL:语句被忽略       ORA-06550:第9行,第38列:       PLS-00302:必须声明组件“ RR”       ORA-06550:第9行,第7列:       PL / SQL:语句被忽略       06550。00000-“%s行,%s列:\ n%s”       *原因:通常是PL / SQL编译错误。

另一个:

  

错误报告-       ORA-06550:第5行,第38列:       PLS-00302:必须声明组件“ TOSTRING”       ORA-06550:第5行,第7列:       PL / SQL:语句被忽略       06550。00000-“%s行,%s列:\ n%s”       *原因:通常是PL / SQL编译错误。       *动作:

get_data只是一个返回select语句结果(返回数据库行)的函数

1 个答案:

答案 0 :(得分:2)

不确定代码中的get_data()toString是什么。但是,这应该可以解释如何显示对象值。

create or replace TYPE  mytype -- removed double quotes
    AS OBJECT
    (
        "ID"   NUMBER(10),
        "G"    NUMBER(10),
        "GES"  VARCHAR2(100 BYTE), --Use VARCHAR2 instead of VARCHAR
        "CC"   NUMBER(10),
        "RR"   VARCHAR2(100 BYTE)
    );
    /
SET SERVEROUTPUT ON    
DECLARE
     outn   mytype := mytype(1,10,'GES1',20,'RR1'); --declaration and assignment
BEGIN
     dbms_output.put_line(outn.id);
     dbms_output.put_line(outn.g);
     dbms_output.put_line(outn.ges);
     dbms_output.put_line(outn.cc);
     dbms_output.put_line(outn.rr);
END;
/

结果

Type MYTYPE compiled

1
10
GES1
20
RR1


PL/SQL procedure successfully completed.