记录数据类型是PL / SQL数据类型. SQL不知道它.这可能是你收到错误的原因.看这个例子:

SQL> create package mypkg

2 as

3 type myrec is record

4 ( id int

5 , name varchar2(10)

6 );

7 function f return myrec;

8 end mypkg;

9 /

Package created.

SQL> create package body mypkg

2 as

3 function f return myrec

4 is

5 r myrec;

6 begin

7 r.id := 1;

8 r.name := 'test';

9 return r;

10 end f;

11 end mypkg;

12 /

Package body created.

SQL> desc mypkg

FUNCTION F RETURNS RECORD

ID NUMBER(38) OUT

NAME VARCHAR2(10) OUT

SQL> select mypkg.f from dual

2 /

select mypkg.f from dual

*

ERROR at line 1:

ORA-00902: invalid datatype

SQL中的错误我指的是.

您可以从PL / SQL调用它:

SQL> declare

2 r mypkg.myrec;

3 begin

4 r := mypkg.f;

5 dbms_output.put_line(r.id);

6 dbms_output.put_line(r.name);

7 end;

8 /

1

test

PL/SQL procedure successfully completed.

如果要在SQL中使用该函数,则可以创建SQL对象类型.请注意,直接从C#调用函数看起来比坚持使用SQL执行此操作更为可取.但只是为了记录:

SQL> drop package mypkg

2 /

Package dropped.

SQL> create type myobj is object

2 ( id int

3 , name varchar2(10)

4 );

5 /

Type created.

SQL> create package mypkg

2 as

3 function f return myobj;

4 end mypkg;

5 /

Package created.

SQL> create package body mypkg

2 as

3 function f return myobj

4 is

5 begin

6 return myobj(1,'test');

7 end f;

8 end mypkg;

9 /

Package body created.

SQL> select mypkg.f from dual

2 /

F(ID, NAME)

--------------------------------------------------------------

MYOBJ(1, 'test')

1 row selected.

问候,抢.

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐