我正在尝试显示对象中的所有值,但它给我“必须声明”错误。
我尝试了下面的代码,但仍然给我同样的错误。
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语句结果(返回数据库行)的函数
答案 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.