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

时间:2015-07-03 10:25:55

标签: oracle stored-procedures

我是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 个答案:

答案 0 :(得分:3)

在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;