oracle 返回单行或者多行记录集
我要在存储过程中返回多行数据,请大哥帮下忙,刚学oracle,好多东西与sqlserver不同,不知用什么方式来返回。大哥,帮写个存储过程的例子哇。谢了...
我要在存储过程中返回多行数据,请大哥帮下忙,刚学oracle,好多东西与sql server不同,不知用什么方式来返回。
大哥,帮写个存储过程的例子哇。谢了 展开
大哥,帮写个存储过程的例子哇。谢了 展开
4个回答
展开全部
用游标,你就这么说没法帮你解答的太深
具体的oracle的游标用法可以上网搜索一下,不行的话我这有个word版的东西,但是看着挺费劲的
----补充-----
http://zhidao.baidu.com/question/176748549.html
这有个下午帮别人写的,涉及到游标的问题
具体的oracle的游标用法可以上网搜索一下,不行的话我这有个word版的东西,但是看着挺费劲的
----补充-----
http://zhidao.baidu.com/question/176748549.html
这有个下午帮别人写的,涉及到游标的问题
展开全部
-- 先创建一个自定义类型
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;
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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
正常的方法就是返回一个游标,就像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;
如果使用这种方法还需要再写个方法定期清理这一类型的表,以免太多的这些临时表导致数据库太大了
如果想简单一点也可以用返回一个临时表名也行,就是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;
如果使用这种方法还需要再写个方法定期清理这一类型的表,以免太多的这些临时表导致数据库太大了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在存储过程中建立一临时表,保存你要返回的结果,这样你想返回多少行记录都可以啦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询