WEB开发网
开发学院数据库Oracle Oracle与MSSQL过程之间的转化 阅读

Oracle与MSSQL过程之间的转化

 2007-05-06 12:07:19 来源:WEB开发网   
核心提示:这两天写数据库升级脚本,发现MSSQL和Oracle之间的转化还是比较容易的,Oracle与MSSQL过程之间的转化,以下面两个过程为例,两者的功能相似,1.MSSQL脚本/**更改表名**/Begindeclare@tempPoTableNamevarchar(50)--性能对象表名declare@tempPoSpN

这两天写数据库升级脚本,发现MSSQL和Oracle之间的转化还是比较容易的。

以下面两个过程为例。两者的功能相似。

1.MSSQL脚本

/**更改表名**/
Begin
  declare@tempPoTableNamevarchar(50)    --性能对象表名
  declare@tempPoSpNamevarchar(50)      --性能过程名
  declare@errorInfovarchar(200)      --错误信息
  declare@cntint              --计数器
  
  declare@tempSQL  varchar(1000)
--定义表名、同步表名和存储过程游标 
set@tempSQL='declareallValues_Cursorcursorfor'+CHAR(13)+CHAR(10)    
set@tempSQL= @tempSQL+'selectPOTABLENAME,POSPNAMEfromPM_NEPODEF_TABLE
  WHEREPOID>110499andPOID<110580'
EXEC(@tempSQL)
OPENallValues_Cursor
--判断是否由符合游标条件的行,如果没有则关闭和释放游标,异常返回
  IF(@@CURSOR_ROWS=0)
  BEGIN
    CLOSEallValues_Cursor
    DEALLOCATEallValues_Cursor
    set@errorInfo='没有指定表名或存储过程名!'
    print@errorInfo
    return
 END  
   print'开始更改原有表名……'
  FETCH NEXTFROMallValues_CursorINTO@tempPoTableName,@tempPoSpName
  --根据给定的表名、存储过程名创建相应的数据存储存储过程
  WHILE (@@FETCH_STATUS<>-1)
  BEGIN
    print@tempPoTableName
    
    IF(EXISTS(SELECTnamefromsysobjectsWHEREname=@tempPoTableName))
   BEGIN
   set@tempSQL='ALTERTABLE'+@tempPoTableName+'DROP
     constraintPK_'+@tempPoTableName
   EXEC(@tempSQL)
   set@tempSQL=@tempPoTableName+'_TMP'
    EXECSp_rename@tempPoTableName,@tempSQL
    END
    ELSE
   BEGIN
   print'没有找到表'+@tempPoTableName;
    END 
IF(EXISTS(SELECTnamefromsysobjectsWHEREname=@tempPoSpName))
    BEGIN
    set@tempSQL='DROPPROCEDURE'+@tempPoSpName;
    EXEC(@tempSQL)
   END
   ELSE
    BEGIN
   print'没有找到过程'+@tempPoSpName;
    END
FETCH NEXTFROMallValues_CursorINTO@tempPoTableName,@tempPoSpName
  END
  CLOSEallValues_Cursor
  DEALLOCATEallValues_Cursor
  print'结束更改原有表名……'
  print'------------------------'
END
GO

2.ORACLE脚本

1 2 3  下一页

Tags:Oracle MSSQL 过程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接