免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4283 | 回复: 4
打印 上一主题 下一主题

请教返回表的函数写法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-03 19:23 |只看该作者 |倒序浏览
有下面两个SQLServer的Procedure和Function

CREATE FUNCTION transfer_f (@accountid int,@memberid int)
RETURNS @temp table
(
   memberid int
)
AS  
BEGIN
   insert @temp
      select memberid from
      ( select * from user_t where pathkeys like '%/'+cast(@memberid as varchar)+'%' or memberid=@memberid )
   return
END
GO

CREATE procedure transfer_surname
(
  v_accountid int,
  v_tAccountid int,
  v_memberid int,
  v_rowcount out integer
)
as
begin
   update surname set accountid=v_tAccountid where memberidid in (
         select t.memberid from transfer_f(v_accountid,v_memberid) t inner join surnamelist s on t.memberid=s.memberid
   );
   v_rowcount:=sql%rowcount;
end;
/

这两个都在改写成Oracle的Procedure和Function
可Function里是RETURES TABLE,而且是用在Procedure的from语句中,在Oracle要如何实现呢?

谢谢!

论坛徽章:
0
2 [报告]
发表于 2007-12-04 08:47 |只看该作者
function 里返回varchar2,procedure里用动态sql

论坛徽章:
0
3 [报告]
发表于 2007-12-04 08:49 |只看该作者
谢谢老版的回答!

我现在就是这么做,因为实在想不出和这两个SQLServer的Function与Procedure同样的实现方法。呵呵!

Oracle里是不是能在from子句里用函数和存储过程的?

感觉好像Oracle在这方面不如SQLServer使用方便啊!

谢谢!

[ 本帖最后由 linuxkumao 于 2007-12-4 09:06 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-12-04 10:28 |只看该作者
是不是可以用临时表来解决呢?
谢谢!

论坛徽章:
0
5 [报告]
发表于 2007-12-04 16:23 |只看该作者
我用了会话临时表,但遇到了点问题。

我新发了一贴,请看这里 http://bbs.chinaunix.net/thread-1024500-1-1.html

谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP