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

如何在存储过程中使用oracle对象类型?

澹台华晖
2023-03-14

我是Oracle的初学者,我声明了这个对象类型:

create or replace 
TYPE behzadtype AS OBJECT 
( /* TODO enter attribute and method declarations here */ 
  SESSIONID Number

)

我希望在我的存储过程中使用该对象:

CREATE OR REPLACE PROCEDURE PROCEDURE1 AS 
  behzadtype t1;
BEGIN
  t1.SESSIONID:=12;
   DBMS_OUTPUT.PUT_LINE('THE VALUES OF P_K ARE' || t1.SESSIONID);

END PROCEDURE1;

但是当编译过程时,我得到了这个错误:

错误(2,14):PLS-00201:必须声明标识符“T1”

我怎样才能写出正确的程序?谢谢大家。

共有1个答案

党祖鹤
2023-03-14

在PL/SQL中声明变量时,首先声明变量的名称,然后是其数据类型。

在您的示例中,您已将behzadtype变量声明为t1类型,然后尝试在代码体中使用名为t1的变量。看起来您想将变量t1声明为behzadtype类型。

除此之外,您不能像那样为对象赋值-您必须先将其初始化为对象。

我认为你想要的是:

create or replace type behzadtype as object 
(sessionid number);
/

create or replace procedure procedure1 as 
  t1 behzadtype;
begin
  t1 := behzadtype(12);
  dbms_output.put_line('THE VALUES OF P_K ARE' || t1.sessionid);
end procedure1;
/

begin
  procedure1;
end;
/

THE VALUES OF P_K ARE12

drop type behzadtype;

drop procedure procedure1;
 类似资料:
  • 下面是我的Oracle存储过程, 我得到以下异常:hibernate:{CALL REPORT_HIBERNATE(?)}org.hibernate.exception.GenericJDBcException:无法执行查询...并且由:java.sql.sqlException:无效的列索引引起 Plz让我知道在Spring中我将如何使用Hibernate注释调用这个存储过程??

  • 由于JPublisher自Oracle12c以来就不受欢迎,我们目前正在考虑其他方法,如何调用具有复杂对象类型作为参数的存储过程,而不是生成的类和JDBC。 似乎EclipseLink JPA扩展是唯一可以帮助它的工具。根据我发现的示例,我可以用简单类型作为参数调用过程。但是我无法注释我的实体类,以便当对象稍微复杂一些时,它们能够正确地映射到数据库中的PL/SQL对象类型。 例如,我们有一个存储过

  • 问题内容: 我已经搜索了一段时间,似乎找不到任何真正的答案。 我有一个Oracle存储过程,该存储过程具有许多in参数,这些参数的类型是表rowtype的表。因此,例如: 在pacakge中声明: Oracle过程: 在Java方面,我有3个对应的对象列表,它们表示用Java填充的每个参数。在这种情况下可以使用MyBatis调用Oracle过程吗? 对象本身是具有String和Integer属性以

  • 问题内容: 在Oracle DB中: 我有以下存储过程: 类型IDS_TABLE是: 如何在Java中调用getInfo? 问题答案: 手动设置Oracle SQL对象和java对象之间的链接不是一件容易的事。特别是,从用户定义对象的数组(或嵌套表)到Java到Oracle的传递比标准数据类型的数组更复杂。换句话说,调用带有签名的过程会更容易: 而不是签名为: 你可以在过程周​​围编写包装器,以将

  • 我想用JMeter测试一个Oracle存储过程,除了参数之外,我已经做了所有的工作。 下面是我的SQL查询: 宣布outinfo varchar2(20);可输出的SYS_REFCURSOR;开始{call RK_JSCX(?,?)};结束;

  • 问题内容: 我试图在postgres 9.3上使用sql调用函数内的函数。 这个问题与我的另一篇文章有关。 我写了下面的函数。到目前为止,我还没有合并任何类型的save-output(COPY)语句,因此我试图通过创建嵌套函数print-out函数来解决此问题。 以上功能有效。 尝试创建嵌套函数。 调用嵌套函数。 输出 上面给出了这个。但是,当在print_out()中将arg1,arg2替换为’