龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle与MSSQL过程之间的转化(1)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
这两天写数据库升级脚本,发现 MSSQL 和 Oracle 之间的转化还是比较容易的。 以下面两个过程为例。两者的功能相似。 1.MSSQL 脚本 /** 更改表名 **/ Begin declare @tempPoTableName varchar ( 50 ) -- 性

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

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

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 '------------------------'
END
GO

精彩图集

赞助商链接