如何解决将Oracle存储过程转换为MSSQL
| 我正在尝试将一些Oracle存储过程转换为MSSQL,但是我做了一些基本的SP \,但是用游标转换SP \时遇到了麻烦。 这是一个例子:create or replace procedure PR_DELETE_FOLDER(indexedFolder NUMBER,indexedPath VARCHAR2,userCode VARCHAR2,folpath VARCHAR2,idpath VARCHAR2,folderid NUMBER) as
cursor c1(pfolid in NUMBER) is
SELECT folder.PARENTFOLDER,folder.FOLDERNAME,folder.FOLDERID,sys_connect_by_path(folder.FOLDERNAME,\'>>\') FOLDERPATH,sys_connect_by_path(folder.FOLDERID,\'>>\') FOLDERIDPATH
FROM T_FOLDER folder
START WITH folder.PARENTFOLDER =pfolid
CONNECT BY PRIOR folder.FOLDERID=folder.PARENTFOLDER;
cursor c2(folid in NUMBER) is SELECT DOCUMENTID,DOCUMENTNAME from T_DOCUMENT where folder = folid;
begin
for r1 in c1(folderid) loop
update T_FOLDER set last_update=sysdate,STATUS=0 where folderid=r1.FOLDERID;
update T_FOLDER set foldercount = foldercount-1 where folderid = r1.PARENTFOLDER;
-- insert into T_FOLDER_AUDIT values(SEQ_FOLDER_AUDIT.nextval,r1.FOLDERID,\'Delete a folder\',userCode,sysdate,1);
insert into t_historical_event values(SEQ_HISTORICAL_EVENT.nextval,null,\'com.affno.adms.folder.Folder\',\'Updated\',r1.FOLDERNAME,1);
for r2 in c2(r1.FOLDERID) loop
update T_DOCUMENT set LAST_UPDATE = sysdate,ISUPDATEINDEXES=1,MODIFIEDBY=userCode,STATUS=0 where documentid = r2.DOCUMENTID;
update T_FOLDER set doccount=doccount-1 where folderid=r1.FOLDERID;
insert into T_DOCUMENT_AUDIT values(SEQ_DOC_AUDIT.nextval,\'delete\',r2.DOCUMENTID,\'Original\',1,userCode);
insert into t_historical_event values(SEQ_HISTORICAL_EVENT.nextval,\'com.affno.adms.document.Document\',\'Deleted\',r2.DOCUMENTNAME,1);
end loop;
end LOOP;
end;
我对MSSQL游标不熟悉,因此我对这个问题一无所知。
谢谢。
解决方法
msdn文章中有一些示例:
十进制游标(Transact-SQL)
USE AdventureWorks2008R2;
GO
DECLARE vend_cursor CURSOR
FOR SELECT BusinessEntityID,Name,CreditRating FROM Purchasing.Vendor
OPEN vend_cursor
FETCH NEXT FROM vend_cursor;
,您可以尝试为此目的制作的转换应用程序,例如http://www.convert-in.com/ora2mss.htm->不幸的是,售价49美元的价格并不便宜。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。