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;
/
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接