当前位置: 首页 > 知识库问答 >
问题:

在PLSQL中显示所有对象值

吕天逸
2023-03-14

我试图显示一个对象中的所有值,但它给了我“必须声明”错误。

我尝试了下面的代码,但仍然出现相同的错误。

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语句的结果(返回db行)

共有1个答案

田巴英
2023-03-14

不确定您的代码中有哪些内容。但是,这应该解释如何显示对象值。

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.
 类似资料:
  • 我是JProfiler的新手。我创建了一个非常简单的测试应用程序。这是一个带有main方法的Main.java: 注意,我暂停直到按键。通过这种方式,我确信主作用域在我按下一个键之前不会结束,所以我希望e存在并且不会被垃圾收集(如果这个假设不正确,请纠正我)。示例类: 我使用JProfiler Eclipse插件启动上述应用程序。我创建了一个基于完整仪器配置文件的会话;我已经删除了Java EE和

  • 我使用的是sequelize ORM,而对于DB我使用的是MySQL,在其中我关联了两个表并获得了数据,但我希望第二个数据(另一个表的数据)不应该像嵌套对象一样进来,而是我们可以在一个对象中显示所有数据(两个表的数据)。 让我展示一下屏幕快照。 我想要的东西。 忽略数据的键和值,但我的问题是,我们是否可以在同一对象中显示另一个表的数据(像inner join一样),而不是像嵌套对象中的数据。 任何

  • 问题内容: 我想知道如何列出对象可用的所有方法,例如: 这应该打印: 问题答案: 您可以用来获取属于某个对象的所有属性(无论是否可枚举)。例如: 然后,您可以使用来仅获取方法: 在ES3浏览器(IE8及更低版本)中,内置对象的属性不可枚举。像和不是内置的对象,它们是由浏览器定义的,很可能是通过设计枚举的。 从ECMA-262第3版开始: 全局对象 有一个唯一的全局对象(15.1),它在控制进入任何

  • 我正在编写一个java代码,我应该创建两个类Vehicle和SecondHandVehicle,并创建一个main来测试代码我的代码运行良好,但我想改变printSecondHandVehicles中的一些东西,使它只打印一个所有者的车辆,忘记任何与一个以上所有者有关的东西。车辆类别: 第二类手推车:

  • id Number - 与显示相关联的唯一标识符。 rotationNumber -顺时针方向的屏幕旋转角度, 可选0,90,180,270。 scaleFactor Number - 输出设备的像素比例因子。 touchSupport String - 是否支持触摸,可选 available, unavailable, unknown. bounds Object Rectangle​ size

  • 我正在进行一个项目,我应该创建一个应用程序,该应用程序会获取信息并将其存储在JList中,当我在JList中选择一个人的姓名时,它应该会显示此人的联系信息 我制作了两个类,一个是contact类,另一个是JFrame类。 这是接触类 然后这是我正在处理的添加按钮的代码。 我只是需要帮助添加到JList中的联系人类,并且能够在JList上显示第一个和最后一个名字。谢谢你提前帮助我