Oracle与M QL过程之间的转化

文章作者 100test 发表时间 2007:09:06 12:55:43
来源 100Test.Com百考试题网


  这两天写数据库升级脚本,发现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 0selectPOTABLENAME,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


相关文章


ResultSetsfromStoredProceduresInOracle
Oracle数据库的空间管理技巧
Oracle8i基于规则的优化机制对表达式的处理
Oracle中临时文件File#和Db_files关系
Oracle与M QL过程之间的转化
Oracle数据库体系框架及SQL语句性能探讨
用裸设备来提高Oracle数据库的性能
如何使用Oracle10gR2I tantClientLight执行程序部署
OraclePL_SQL编程风格与系统性能提高
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛