这两天写数据库升级脚本,发现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编程风格与系统性能提高
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛