declare a varchar2(40);
b varchar2(20);
begin
a:='123';
b:='456';
select a,b from dual;
end;
/
有错怎么改让它返回一个表,返回的表有两列,一个是a,一个是b。必须要返回表。
b varchar2(20);
begin
a:='123';
b:='456';
select a,b from dual;
end;
/
有错怎么改让它返回一个表,返回的表有两列,一个是a,一个是b。必须要返回表。
a varchar2(40);
b varchar2(20);
begin
a:='123';
b:='456';
dbms_output.put_line('a:'||a||',b:'||b);
end;
/
ocursor sys_refcursor;
stra varchar2(20);
strb varchar2(20);
begin
stra := '123';
strb := '456'; open ocursor for
select stra as col1, strb as col2 from dual;
end;
这个贴子,与你的需求有些相似.
a varchar2(40);
b varchar2(20);
begin
a:='123';
b:='456';
execute immediate 'select ' || a || ', ' || b || 'from dual';
end;
--建立过程
create or replace procedure
p_test(p_cur out sys_refcursor)
as
begin
open p_cur
for
select * from loginfo;
end p_test;
--sqlplus调用
var r refcursor;
exec p_test(:r);
print r;
2 /SQL> create or replace function sample_table_test return T_STRARR is
2 v_arr1 T_STRARR;
3 begin
4 v_arr1 := T_STRARR(2);
5 v_arr1.EXTEND;
6 v_arr1(1):='a';
7 v_arr1.EXTEND;
8 v_arr1(2):='b';
9 return v_arr1;
10 end;
11 /Function created.
SQL> select * from table(sample_table_test);COLUMN_VALUE
--------------------------------------------------------------------------------
a
b