oracle 返回单行或者多行记录集
发布网友
发布时间:2022-05-03 20:00
我来回答
共4个回答
热心网友
时间:2022-05-03 21:30
用游标,你就这么说没法帮你解答的太深
具体的oracle的游标用法可以上网搜索一下,不行的话我这有个word版的东西,但是看着挺费劲的
----补充-----
http://zhidao.baidu.com/question/176748549.html
这有个下午帮别人写的,涉及到游标的问题
热心网友
时间:2022-05-03 22:48
-- 先创建一个自定义类型
create or replace package types as
type cur_type is ref cursor;
end;
-- 返回游标的函数
CREATE OR REPLACE FUNCTION f_test(
in_param1 VARCHAR2 ,
in_param2 VARCHAR2 )
RETURN types.cur_type
AS
v_cursor types.cur_type;
v_sql VARCHAR2(2000);
BEGIN
v_sql := 'select * from table_name where 1 = 1';
OPEN v_cursor FOR
v_sql;
RETURN v_cursor;
END f_test;
热心网友
时间:2022-05-04 00:22
正常的方法就是返回一个游标,就像monkey_jnu说的一样。
如果想简单一点也可以用返回一个临时表名也行,就是msc_it说的方法:
CREATE OR REPLACE FUNCTION FUN_TEST RETURN VARCHAR2 AS
V_TABLE_NAME VARCHAR2(100);
V_SQL VARCHAR2(4000);
BEGIN
V_TABLE_NAME:='TEMP_'||TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS');
V_SQL:='CREATE TABLE '||V_TABLE_NAME||' SELECT * FROM TABLE_NAME';
RETURN V_TABLE_NAME;
END;
如果使用这种方法还需要再写个方法定期清理这一类型的表,以免太多的这些临时表导致数据库太大了
热心网友
时间:2022-05-04 02:14
在存储过程中建立一临时表,保存你要返回的结果,这样你想返回多少行记录都可以啦。