Sql 从函数oracle返回varray
我想从oracle函数返回一个varray,但我不知道怎么做。 以下是我迄今为止所做的尝试Sql 从函数oracle返回varray,sql,oracle,plsql,oracle11g,Sql,Oracle,Plsql,Oracle11g,我想从oracle函数返回一个varray,但我不知道怎么做。 以下是我迄今为止所做的尝试 set serveroutput on; declare type array_t is varray(2) of number; CREATE OR REPLACE FUNCTION func() return array_t begin array array_t :=array_t(0,0); array(1):=3; array(2):=20; return array
set serveroutput on;
declare
type array_t is varray(2) of number;
CREATE OR REPLACE FUNCTION func() return array_t
begin
array array_t :=array_t(0,0);
array(1):=3;
array(2):=20;
return array;
end;
hier是函数的正确语法
create type array_t is varray(2) of number;
/
CREATE OR REPLACE FUNCTION func return array_t
IS
v_array array_t;
begin
v_array :=array_t(0,0);
v_array(1):=3;
v_array(2):=20;
return v_array;
end;
/
例如,可以在匿名plsql块中调用该函数
declare
v_func_result array_t;
begin
v_func_result := func();
dbms_output.put_line(v_func_result(1));
dbms_output.put_line(v_func_result(2));
end;
/
您不需要在SQL范围内声明过程;您可以将其声明为:
@schurik还可以举一个如何调用这个函数的例子@我的意思是,当我试图调用像v_数组这样的函数时:=func();我得到了错误。@PrashantBhanarkar我已经用function的例子完成了我的答案call@schurik我们可以从select查询调用这个函数吗?
SET SERVEROUTPUT ON;
DECLARE
TYPE array_t IS VARRAY(2) OF NUMBER;
data array_t;
FUNCTION func RETURN array_t IS BEGIN RETURN array_t( 3, 20 ); END func;
BEGIN
data := func();
DBMS_OUTPUT.PUT_LINE( '(' || data(1) || ', ' || data(2) || ')' );
END;
/