可以使用但是你必须将得到的结果放在变量中: Declare v_1 varchar2(1); begin select 'X' into v_1 from dual; end;
我指的是使用select *来取一组数据集,而不是某个值
declare v_1 table_name%rowtype; begin select * into v_1 from table_name end ;
楼上同学是错的,rowtype只能存一条记录,多于一条以上会报错不用游标也可以,create or replace type myobjectype as object (x int,y date,z varchar2(50));--创建可以返回纪录集的函数(不传入表名参数) SQL> create or replace function testrerecordnotabname (tableid in number) 2 return mytabletype 3 as 4 l_data mytabletype :=mytabletype(); 5 begin 6 for i in (select * from a where id>=tableid) loop 7 l_data.extend; 8 l_data(l_data.count) := myobjectype(i.id,i.doctime,i.name); 9 exit when i.id = 62; 10 end loop; 11 return l_data; 12 end; 13 /
Declare
v_1 varchar2(1);
begin
select 'X' into v_1 from dual;
end;
v_1 table_name%rowtype;
begin
select * into v_1 from table_name
end ;
SQL> create or replace function testrerecordnotabname (tableid in number)
2 return mytabletype
3 as
4 l_data mytabletype :=mytabletype();
5 begin
6 for i in (select * from a where id>=tableid) loop
7 l_data.extend;
8 l_data(l_data.count) := myobjectype(i.id,i.doctime,i.name);
9 exit when i.id = 62;
10 end loop;
11 return l_data;
12 end;
13 /