1.MSSQL 脚本 /** 更改表名 **/ Begin declare @tempPoTableName varchar ( 50 ) -- 性能 对" name="description" />
这两天写数据库升级脚本,发现MSSQL和Oracle之间的转化还是比较容易的。
以下面两个过程为例。两者的功能相似。
MILY: 宋体; mso-bidi-font-family: 宋体">1.MSSQL脚本
/** 更改表名 **/
Begin
declare @tempPoTableName varchar(50) --性能对象表名
declare @tempPoSpName varchar(50) --性能过程名
declare @errorInfo varchar(200) --错误信息
declare @cnt int --计数器
declare @tempSQL varchar(1000)
--定义表名、同步表名和存储过程游标 set @tempSQL = ' declare allValues_Cursor cursor for '+CHAR(13) + CHAR(10)
set @tempSQL = @tempSQL + ' select POTABLENAME,POSPNAME from PM_NEPODEF_TABLE
WHERE POID>110499 and POID<110580'
EXEC (@tempSQL)
OPEN allValues_Cursor
--判断是否由符合游标条件的行,如果没有则关闭和释放游标,异常返回 IF(@@CURSOR_ROWS = 0 )
BEGIN
CLOSE allValues_Cursor
DEALLOCATE allValues_Cursor
set @errorInfo = '没有指定表名或存储过程名!'
print @errorInfo
return
END
print '开始更改原有表名……'
FETCH NEXT FROM allValues_Cursor INTO @tempPoTableName,@tempPoSpName
--根据给定的表名、存储过程名 创建相应的数据存储存储过程
WHILE (@@FETCH_STATUS <> -1)
BEGIN
print @tempPoTableName
IF (EXISTS (SELECT name from sysobjects WHERE name=@tempPoTableName))
BEGIN
set @tempSQL = 'ALTER TABLE '+ @tempPoTableName+' DROP
constraint PK_'+@tempPoTableName
EXEC (@tempSQL)
set @tempSQL = @tempPoTableName+'_TMP'
EXEC Sp_rename @tempPoTableName,@tempSQL
END
ELSE
BEGIN
print '没有找到表'+@tempPoTableName;
END
IF (EXISTS (SELECT name from sysobjects WHERE name=@tempPoSpName)) BEGIN
set @tempSQL = 'DROP PROCEDURE '+@tempPoSpName;
EXEC (@tempSQL)
END
ELSE
BEGIN
print '没有找到过程'+@tempPoSpName;
END
FETCH NEXT FROM allValues_Cursor INTO @tempPoTableName,@tempPoSpName END
CLOSE allValues_Cursor
DEALLOCATE allValues_Cursor
print '结束更改原有表名……'
print '------------------------'
ENDGO
BEGIN PM_NEPODEF_TABLE WHERE POID>110499 and POID<110580; FROM user_tables WHERE table_name = tempPoTableName); FROM user_procedures WHERE OBJECT_NAME = tempPoSpName); PK_'||tempPoTableName; TO '||tempPoTableName||'_TMP'; |
共2页: 1 [2] 下一页 |