oracle调用sqlserver视图,,oracle/SQLServer语法的函数、视图转为DB2语法的脚本

求救,oracle/SQLServer语法的函数、视图转为DB2语法的脚本

没有办法,小生之前没有接触过DB2语法,我这里有两套SQL脚本,一个是SQLServer的,一个是Oracle的,都是完成一样的事情,有没有大牛帮忙转换一下呢,谢谢啦

SQLServer的

SQL code--1: 创建函数F_ConcatedTagname

--drop function F_ConcatedTagname;

create function F_ConcatedTagname(

@ItemNumber numeric(9)

)

returns varchar(8000)

as

begin

declare @ret varchar(8000)

select @ret = ''

select @ret = @ret + tagname + ';' from xwcmdoctag

where docid = @ItemNumber and taggingnum>0

return @ret

end

go

--2: 创建函数F_GetRecId

--drop function dbo.F_GetRecId

create function F_GetRecId(@docid numeric(9),@chnlid numeric(9))

returns numeric(9)

as

begin

declare @ret numeric(9)

select @ret = 0

select @ret=recid from wcmchnldoc

where chnlId = @chnlid and docid= @docid

return @ret

end

go

--3: 创建函数F_GetModal

--drop function dbo.F_GetModal

create function F_GetModal(@docid numeric(9),@chnlid numeric(9))

returns numeric(9)

as

begin

declare @ret numeric(9)

select @ret = 0

select @ret=modal from wcmchnldoc

where chnlId = @chnlid and docid= @docid

return @ret

end

go

--4: 创建函数F_GetDocOrderPri

--drop function dbo.F_GetDocOrderPri

create function F_GetDocOrderPri(@docid numeric(9),@chnlid numeric(9))

returns numeric(9)

as

begin

declare @ret numeric(9)

select @ret = 0

select @ret=docorderpri from wcmchnldoc

where chnlId = @chnlid and docid= @docid

return @ret

end

go

--5: 创建函数F_GetStatus

-- drop function dbo.F_GetStatus

create function F_GetStatus (@docid numeric(9),@chnlid numeric(9))

returns numeric(9)

as

begin

declare @ret numeric(9)

select @ret = 0

select @ret=docstatus from wcmchnldoc

where chnlId = @chnlid and docid= @docid

return @ret

end

go

--6: 创建视图

--drop view V_WCMDocumentAndTags;

create view V_WCMDocumentAndTags

as

SELECT WCMDOCUMENT.*,kmdoctags.DocTags AS DocTags,dbo.F_GetStatus(WCMDOCUMENT.DocId,WCMDOCUMENT.DocChannel) as docstatus1,dbo.F_GetRecId(WCMDOCUMENT.DocId,WCMDOCUMENT.DocChannel) as RecId,

dbo.F_GetDocOrderPri(WCMDOCUMENT.DocId,WCMDOCUMENT.DocChannel) as DocorderPri,dbo.F_GetModal(WCMDOCUMENT.DocId,WCMDOCUMENT.DocChannel) as Modal

FROM WCMDOCUMENT LEFT OUTER JOIN

(SELECT docid, DocTags =dbo.F_ConcatedTagname(docid)

FROM xwcmdoctag

GROUP BY docid) kmdoctags ON

WCMDOCUMENT.DOCID = kmdoctags.docid

WHERE (WCMDOCUMENT.DOCSTATUS > 0)

Go

Oracle的

SQL code--1: 创建函数F_ConcatedTagname

create or replace function F_ConcatedTagname(

f_DocId in NUMBER) return varchar2 is

v_Result varchar2(8000);

v_TagName varchar2(255);

CURSOR c_DocTag IS SELECT tagname FROM xwcmdoctag where docid=f_DocId and taggingnum>0;

begin

OPEN c_DocTag;

LOOP

FETCH c_DocTag INTO v_TagName;

EXIT WHEN c_DocTag%NOTFOUND;

v_Result := CONCAT(v_Result,nvl(v_TagName,''));

v_Result := CONCAT(v_Result,';');

END LOOP;

CLOSE c_DocTag;

return nvl(v_Result,'');

end F_ConcatedTagname;

--2: 创建函数F_GetRecId

create or replace function F_GetRecId(Idocid in numeric,Ichnlid in numeric) return numeric is

Result numeric(9);

begin

select recid into Result from wcmchnldoc where chnlId = Ichnlid and docid= Idocid;

return(Result);

end F_GetRecId;

--3: 创建函数F_GetModal

create or replace function F_GetModal(Idocid in numeric,Ichnlid in numeric) return numeric is

Result numeric(9);

begin

select modal into Result from wcmchnldoc where chnlId = Ichnlid and docid= Idocid;

return(Result);

end F_GetModal;

--4: 创建函数F_GetDocOrderPri

create or replace function F_GetDocOrderPri(Idocid in numeric,Ichnlid in numeric) return numeric is

Result numeric(9);

begin

select docorderpri into Result from wcmchnldoc where chnlId = Ichnlid and docid= Idocid;

return(Result);

end F_GetDocOrderPri;

--5: 创建函数F_GetStatus

create or replace function F_GetStatus(Idocid in numeric,Ichnlid in numeric) return numeric is

Result numeric(9);

begin

select docstatus into Result from wcmchnldoc where chnlId = Ichnlid and docid= Idocid;

return(Result);

end F_GetStatus;

--6: 创建视图

--drop view V_WCMDocumentAndTags;

create view V_WCMDocumentAndTags

as

SELECT WCMDOCUMENT.*,kmdoctags.DocTags AS DocTags,F_GetStatus(WCMDOCUMENT.DocId,WCMDOCUMENT.DocChannel) as docstatus1,F_GetRecId(WCMDOCUMENT.DocId,WCMDOCUMENT.DocChannel) as RecId,

F_GetDocOrderPri(WCMDOCUMENT.DocId,WCMDOCUMENT.DocChannel) as DocorderPri,F_GetModal(WCMDOCUMENT.DocId,WCMDOCUMENT.DocChannel) as Modal

FROM WCMDOCUMENT ,

(SELECT docid,F_ConcatedTagname(docid) DocTags

FROM xwcmdoctag

GROUP BY docid) kmdoctags

where WCMDOCUMENT.DOCID = kmdoctags.docid(+) and WCMDOCUMENT.DOCSTATUS > 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值