将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游标不熟悉,因此我对这个问题一无所知。 谢谢。     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)