【问题标题】:How can i use oracle object type in stored procedure?如何在存储过程中使用 oracle 对象类型?
【发布时间】:2015-09-21 03:49:13
【问题描述】:

我是 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”

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

【问题讨论】:

  • @davegreen100 感谢您关注我的问题,您能给我写信给我正确的程序吗?

标签: oracle stored-procedures


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 2017-06-08
    • 2019-10-29
    • 2016-07-21
    • 2011-10-10
    • 2017-03-02
    • 1970-01-01
    相关资源
    最近更新 更多