WEB开发网
开发学院数据库Oracle Sqlserver2005迁移至Oracle系列之二:生成存储过程... 阅读

Sqlserver2005迁移至Oracle系列之二:生成存储过程

 2009-03-03 13:11:21 来源:WEB开发网   
核心提示: --进一步处理,注意各步骤的顺序不可随意调换begin --处理tab(换成空格) update ##sp set [definition] = replace(replace(replace([definition],char(9),replicate(char(32),4)),cha

--进一步处理,注意各步骤的顺序不可随意调换

begin
    --处理tab(换成空格)   
    update ##sp set [definition] = replace(replace(replace([definition],char(9),replicate(char(32),4)),char(10),char(32)),char(13),char(32))
    --处理return
    update ##sp set [definition] = [definition] + ';'  where rtrim(ltrim([definition])) like 'return%'
    --处理%create%procedure%
    update ##sp set [definition] = replace([definition],'procedure','OR REPLACE PROCEDURE') where [definition] like '%create%procedure%'
    --处理%exec%
    update ##sp set [definition] = 'null;--' + replace(replace([definition],'execute ',' '),'exec ',' ')  where [definition] like '%exec%'
    --处理%end%
    update ##sp set [definition] = [definition] + ';' where ltrim(rtrim([definition])) = 'end'
    --处理%set%nocount%
    update ##sp set [definition] = '' where [definition] like '%set%nocount%'
    --处理%insert%values%(补足";"号)
    update ##sp set [definition] = [definition] + ';' where [definition] like '%insert%values%'
    --处理%if %(补足then)
    update ##sp set [definition] = [definition] + ' then' where [definition] like '%if %'
    --处理%else if%
    update ##sp set [definition] = replace([definition],'else if','elsif') where [definition] like '%else if%'
    --处理%declare %
    update ##sp set [definition] = replace([definition],'declare','') where [definition] like '%declare %'
    --替换不规范关键字' uid,'、',uid'、' uid '
    update ##sp set [definition] = replace(replace(replace([definition],' uid ',' "UID" '),',uid ',',"UID" '),' uid,',' "UID",')
    --替换不规范关键字' index,'、',index'、' index '
    update ##sp set [definition] = replace(replace(replace([definition],' index ',' "INDEX" '),',index ',',"INDEX" '),' index,',' "INDEX",')
    --替换不规范关键字' mode,'、',mode'、' mode '
    update ##sp set [definition] = replace(replace(replace([definition],' mode ',' "MODE" '),',mode ',',"MODE" '),' mode,',' "MODE",')
    --替换不规范关键字' type,'、',type'、' type '
    update ##sp set [definition] = replace(replace(replace([definition],' type ',' "TYPE" '),',type ',',"TYPE" '),' type,',' "TYPE",')

    --替换非法字母%@%(为v_)
    update ##sp set [definition] = replace([definition],'@','v_') where [definition] like '%@%'
    --处理%ErrorRemark%
    update ##sp set [definition] = replace(replace(replace([definition],'+','||'),'=',':='),'set','') + ';' where [definition] like '%ErrorRemark%'
    --处理';;'
    update ##sp set [definition] = replace(replace([definition],';;',';'),';;',';') where [definition] like '%;;%'
    --处理连续空格、标点符号空格
    update ##sp set [definition] = replace([definition],' ;',';')
    update ##sp set [definition] = replace([definition],' ,',',')
    update ##sp set [definition] = replace([definition],'-- ','--')

    --删除空行
    delete from ##sp where [definition] = ''
    --删除--行注释
    --delete from ##sp where [definition] like '--%'
end

--将语句变为小写

--update ##sp set [definition] = upper([definition])

--输出结果

select ([definition]) + '' from ##sp order by id
--where [definition] like '%select%v_%=%' and [definition] not like '%where%'

系列文章:

Sqlserver2005迁移至Oracle系列之一:生成表(上)

Sqlserver2005迁移至Oracle系列之一:生成表(下)

Sqlserver2005迁移至Oracle系列之二:生成存储过程

Sqlserver2005迁移至Oracle系列之三:在Oracle中创建sql中的常见函数

Sqlserver2005迁移至Oracle系列之四:在Oracle中创建位或运算函数-bitor

Sqlserver2005迁移至Oracle系列之五:角色、用户、及权限

上一页  1 2 3 4 

Tags:Sqlserver 迁移 Oracle

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