WEB开发网
开发学院数据库Oracle Oracle与MSSQL过程之间的转化 阅读

Oracle与MSSQL过程之间的转化

 2007-05-06 12:07:19 来源:WEB开发网   
核心提示: BEGINDECLAREtempPoTableNamevarchar2(50);--性能对象表名tempPoSpNamevarchar2(50);--性能过程名errorInfovarchar2(200);--错误信息tempSQLvarchar2(1000);cnt1number(1);
BEGIN
DECLARE
  tempPoTableNamevarchar2(50);    --性能对象表名
  tempPoSpNamevarchar2(50);      --性能过程名
  errorInfovarchar2(200);      --错误信息
  tempSQL  varchar2(1000);
  cnt1 number(1);
  cnt2 number(2);
  
  --定义表名、同步表名和存储过程游标
  CursorallValues_Cursoris
    selectUPPER(TRIM(POTABLENAME)),UPPER(TRIM(POSPNAME))from
      PM_NEPODEF_TABLEWHEREPOID>110499andPOID<110580;
  BEGIN
  OPENallValues_Cursor;
  
--判断是否由符合游标条件的行,如果没有则关闭和释放游标,异常返回
  
  DBMS_OUTPUT.PUT_LINE('开始更改原有表名……');
  FETCH allValues_CursorINTOtempPoTableName,tempPoSpName;
  --根据给定的表名、存储过程名创建相应的数据存储存储过程
  WHILEallValues_Cursor%foundLOOP
  
  cnt1:=0;
  cnt2:=0;
  BEGIN
    SELECT1INTOcnt1FROMdualWHEREexists(SELECTtable_name
      FROMuser_tablesWHEREtable_name=tempPoTableName);
    SELECT1INTOcnt2FROMdualWHEREexists(SELECTOBJECT_NAME
      FROMuser_proceduresWHEREOBJECT_NAME=tempPoSpName);
  exception
  WHENno_data_found THEN
    null;
  END;
  
  IFcnt1=1THEN
    DBMS_OUTPUT.PUT_LINE(tempPoTableName);
    tempSQL:='ALTERTABLE'||tempPoTableName||'DROPconstraint
      PK_'||tempPoTableName;
    EXECUTEIMMEDIATEtempSQL;
    tempSQL:='ALTERTABLE'||tempPoTableName||'RENAME
      TO'||tempPoTableName||'_TMP';
    EXECUTEIMMEDIATEtempSQL;
  ELSE
    DBMS_OUTPUT.PUT_LINE('没有找到表'||tempPoTableName);
  ENDIF;
  
  IFcnt2=1THEN
    tempSQL:='DROPPROCEDURE'||tempPoSpName;
    EXECUTEIMMEDIATEtempSQL;
  ELSE
    DBMS_OUTPUT.PUT_LINE('没有找到过程'||tempPoSpName);
  ENDIF;
  
    FETCHallValues_CursorINTOtempPoTableName,tempPoSpName;
  ENDLOOP;
  CLOSEallValues_Cursor;
  DBMS_OUTPUT.PUT_LINE('结束更改原有表名……');
  DBMS_OUTPUT.PUT_LINE('------------------------');
  END;
END;
/

Tags:Oracle MSSQL 过程

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