oracle 返回单行或者多行记录集

我要在存储过程中返回多行数据,请大哥帮下忙,刚学oracle,好多东西与sqlserver不同,不知用什么方式来返回。大哥,帮写个存储过程的例子哇。谢了... 我要在存储过程中返回多行数据,请大哥帮下忙,刚学oracle,好多东西与sql server不同,不知用什么方式来返回。
大哥,帮写个存储过程的例子哇。谢了
展开
 我来答
badkano
2010-08-20 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885365
团长

向TA提问 私信TA
展开全部
用游标,你就这么说没法帮你解答的太深

具体的oracle的游标用法可以上网搜索一下,不行的话我这有个word版的东西,但是看着挺费劲的
----补充-----
http://zhidao.baidu.com/question/176748549.html

这有个下午帮别人写的,涉及到游标的问题
果被欢0
2010-08-20 · TA获得超过215个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:131万
展开全部
-- 先创建一个自定义类型
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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hansshe521
2010-08-25 · TA获得超过540个赞
知道小有建树答主
回答量:127
采纳率:0%
帮助的人:105万
展开全部
正常的方法就是返回一个游标,就像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;
如果使用这种方法还需要再写个方法定期清理这一类型的表,以免太多的这些临时表导致数据库太大了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
松语丝050
2010-08-21 · 超过23用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:33.6万
展开全部
在存储过程中建立一临时表,保存你要返回的结果,这样你想返回多少行记录都可以啦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式