请问怎样把这个sqlserver的函数转换成oracle的函数?

jbas 2006-09-19 11:27:50
sqlserver2000的函数:

create function fFileMenu(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
select @str=menuName,@id=parkey from TShareMenuTree where pkey=@id
while @@rowcount<>0
begin
select @str=menuName+'/'+@str,@id=parkey from TShareMenuTree where pkey=@id
end
return isnull(@str,'/')
End

我转换过后的oracle,但是不正确,请问怎样才可以.
我想得到的是各列查出的数据转换成字符串,如a/b/c/这样的值

CREATE OR REPLACE FUNCTION fFileMenu(id integer)
RETURN varchar2 IS
str varchar2;
BEGIN
str:='';
select str:=menuName,id:=parkey from TShareMenuTree where pkey=id
while @@rowcount<>0
begin
select str:=menuName||'/'||str,id:=parkey from TShareMenuTree where pkey=id
end
return str;
END;
...全文
244 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eric_1999 2006-09-19
  • 打赏
  • 举报
回复
楼主要把所有的数据连成字符串马?
是的话要这样。
create function fFileMenu(id in int)
returns varchar(8000)
is
mn varchar(8000);
pak varchar(8000);

cursor c1 is
select menuName, parkey from TShareMenuTree where pkey=id;

begin
OPEN c1;
LOOP
FETCH c1
INTO mn, pak;
EXIT WHEN c1%NOTFOUND;
str := str || mn || '/' || pak;
str := str || '/';
END LOOP;
CLOSE c1;
return (str)
End
Eric_1999 2006-09-19
  • 打赏
  • 举报
回复
create function fFileMenu(id in int)
returns varchar(8000)
is
mn varchar(8000);
pak varchar(8000);

cursor c1 is
select menuName, parkey from TShareMenuTree where pkey=id;

begin
OPEN c1;
LOOP
FETCH c1
INTO mn, pak;
EXIT WHEN c1%NOTFOUND;
str := mn || '/' || pak || '/';
END LOOP;
CLOSE c1;
return (str)
End;
yuyu1980 2006-09-19
  • 打赏
  • 举报
回复
select str:=menuName,id:=parkey from TShareMenuTree where pkey=id
while @@rowcount<>0
什么意思?想干吗?
jbas 2006-09-19
  • 打赏
  • 举报
回复
谢谢了,有个牛人也给了这代码,可以了

create or replace function fFileMenu(p_id in number) return varchar2
as
str varchar2(8000);
begin
str:='';
for c1 in(select menuname from TShareMenuTree connect by pkey= prior parkey start with pkey=p_id) LOOP
str := str||'/'||c1.menuname;
END LOOP;
str:=substr(str,2,length(str));
return nvl(str,'/');
End;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧