
 /**//** 更改表名 **/
/**//** 更改表名 **/ Begin
Begin declare @tempPoTableName varchar(50)        --性能對(duì)象表名
    declare @tempPoTableName varchar(50)        --性能對(duì)象表名 declare @tempPoSpName varchar(50)            --性能過(guò)程名
    declare @tempPoSpName varchar(50)            --性能過(guò)程名 declare @errorInfo varchar(200)             --錯(cuò)誤信息
    declare @errorInfo varchar(200)             --錯(cuò)誤信息 declare @cnt int                            --計(jì)數(shù)器
    declare @cnt int                            --計(jì)數(shù)器 
     declare @tempSQL    varchar(1000)
    declare @tempSQL    varchar(1000) 
     --定義表名、同步表名和存儲(chǔ)過(guò)程游標(biāo)
    --定義表名、同步表名和存儲(chǔ)過(guò)程游標(biāo) set @tempSQL = ' declare allValues_Cursor cursor for '+CHAR(13) + CHAR(10)
    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'
        set @tempSQL =  @tempSQL + ' select POTABLENAME,POSPNAME from PM_NEPODEF_TABLE WHERE POID>110499 and POID<110580' EXEC (@tempSQL)
    EXEC (@tempSQL)
 OPEN allValues_Cursor
    OPEN allValues_Cursor
 --判定是否由符合游標(biāo)條件的行,假如沒(méi)有則關(guān)閉和釋放游標(biāo),異常返回
    --判定是否由符合游標(biāo)條件的行,假如沒(méi)有則關(guān)閉和釋放游標(biāo),異常返回 IF(@@CURSOR_ROWS = 0 )
    IF(@@CURSOR_ROWS = 0 ) BEGIN
    BEGIN CLOSE allValues_Cursor
        CLOSE allValues_Cursor DEALLOCATE allValues_Cursor
        DEALLOCATE allValues_Cursor set @errorInfo = '沒(méi)有指定表名或存儲(chǔ)過(guò)程名!'
        set @errorInfo = '沒(méi)有指定表名或存儲(chǔ)過(guò)程名!' PRint @errorInfo
        PRint @errorInfo return
        return END
    END     
     print '開(kāi)始更改原有表名……'
    print '開(kāi)始更改原有表名……' FETCH  NEXT FROM allValues_Cursor INTO @tempPoTableName,@tempPoSpName
    FETCH  NEXT FROM allValues_Cursor INTO @tempPoTableName,@tempPoSpName --根據(jù)給定的表名、存儲(chǔ)過(guò)程名 創(chuàng)建相應(yīng)的數(shù)據(jù)存儲(chǔ)存儲(chǔ)過(guò)程
    --根據(jù)給定的表名、存儲(chǔ)過(guò)程名 創(chuàng)建相應(yīng)的數(shù)據(jù)存儲(chǔ)存儲(chǔ)過(guò)程 WHILE  (@@FETCH_STATUS <> -1)
    WHILE  (@@FETCH_STATUS <> -1) BEGIN
    BEGIN print @tempPoTableName
        print @tempPoTableName 
         IF (EXISTS (SELECT name from sysobjects WHERE name=@tempPoTableName))
        IF (EXISTS (SELECT name from sysobjects WHERE name=@tempPoTableName)) BEGIN
        BEGIN set @tempSQL = 'ALTER TABLE '+ @tempPoTableName+' DROP constraint PK_'+@tempPoTableName
        set @tempSQL = 'ALTER TABLE '+ @tempPoTableName+' DROP constraint PK_'+@tempPoTableName EXEC (@tempSQL)
        EXEC (@tempSQL) set @tempSQL = @tempPoTableName+'_TMP'
        set @tempSQL = @tempPoTableName+'_TMP' EXEC Sp_rename @tempPoTableName,@tempSQL
        EXEC Sp_rename @tempPoTableName,@tempSQL END
        END ELSE
        ELSE BEGIN
        BEGIN print '沒(méi)有找到表'+@tempPoTableName;
        print '沒(méi)有找到表'+@tempPoTableName; END
        END   
 IF (EXISTS (SELECT name from sysobjects WHERE name=@tempPoSpName))
        IF (EXISTS (SELECT name from sysobjects WHERE name=@tempPoSpName)) BEGIN
        BEGIN set @tempSQL = 'DROP PROCEDURE '+@tempPoSpName;
        set @tempSQL = 'DROP PROCEDURE '+@tempPoSpName; EXEC (@tempSQL)
        EXEC (@tempSQL) END
        END ELSE
        ELSE BEGIN
        BEGIN print '沒(méi)有找到過(guò)程'+@tempPoSpName;
        print '沒(méi)有找到過(guò)程'+@tempPoSpName; END
        END
 FETCH  NEXT FROM allValues_Cursor INTO @tempPoTableName,@tempPoSpName
    FETCH  NEXT FROM allValues_Cursor INTO @tempPoTableName,@tempPoSpName END
    END CLOSE allValues_Cursor
    CLOSE allValues_Cursor DEALLOCATE allValues_Cursor
    DEALLOCATE allValues_Cursor print '結(jié)束更改原有表名……'
    print '結(jié)束更改原有表名……' print '------------------------'
    print '------------------------' END
END GO
GO BEGIN
BEGIN DECLARE
DECLARE tempPoTableName varchar2(50);        --性能對(duì)象表名
    tempPoTableName varchar2(50);        --性能對(duì)象表名 tempPoSpName varchar2(50);            --性能過(guò)程名
    tempPoSpName varchar2(50);            --性能過(guò)程名 errorInfo varchar2(200);             --錯(cuò)誤信息
    errorInfo varchar2(200);             --錯(cuò)誤信息 tempSQL    varchar2(1000);
    tempSQL    varchar2(1000); cnt1   number(1);
    cnt1   number(1); cnt2   number(2);
    cnt2   number(2); 
     --定義表名、同步表名和存儲(chǔ)過(guò)程游標(biāo)
    --定義表名、同步表名和存儲(chǔ)過(guò)程游標(biāo) Cursor allValues_Cursor is
    Cursor allValues_Cursor is select UPPER(TRIM(POTABLENAME)),UPPER(TRIM(POSPNAME)) from PM_NEPODEF_TABLE WHERE POID>110499 and POID<110580;
         select UPPER(TRIM(POTABLENAME)),UPPER(TRIM(POSPNAME)) from PM_NEPODEF_TABLE WHERE POID>110499 and POID<110580; 
              BEGIN
BEGIN OPEN allValues_Cursor;
    OPEN allValues_Cursor;
 --判定是否由符合游標(biāo)條件的行,假如沒(méi)有則關(guān)閉和釋放游標(biāo),異常返回
    --判定是否由符合游標(biāo)條件的行,假如沒(méi)有則關(guān)閉和釋放游標(biāo),異常返回 
     DBMS_OUTPUT.PUT_LINE('開(kāi)始更改原有表名……');
    DBMS_OUTPUT.PUT_LINE('開(kāi)始更改原有表名……'); FETCH  allValues_Cursor INTO tempPoTableName,tempPoSpName;
    FETCH  allValues_Cursor INTO tempPoTableName,tempPoSpName; --根據(jù)給定的表名、存儲(chǔ)過(guò)程名 創(chuàng)建相應(yīng)的數(shù)據(jù)存儲(chǔ)存儲(chǔ)過(guò)程
    --根據(jù)給定的表名、存儲(chǔ)過(guò)程名 創(chuàng)建相應(yīng)的數(shù)據(jù)存儲(chǔ)存儲(chǔ)過(guò)程 WHILE allValues_Cursor%found LOOP
    WHILE allValues_Cursor%found LOOP 
     cnt1:=0;
    cnt1:=0; cnt2:=0;
    cnt2:=0; BEGIN
    BEGIN SELECT 1 INTO cnt1 FROM dual WHERE exists(SELECT table_name FROM user_tables WHERE table_name = tempPoTableName);
        SELECT 1 INTO cnt1 FROM dual WHERE exists(SELECT table_name FROM user_tables WHERE table_name = tempPoTableName); SELECT 1 INTO cnt2 FROM dual WHERE exists(SELECT OBJECT_NAME FROM user_procedures WHERE OBJECT_NAME = tempPoSpName);
        SELECT 1 INTO cnt2 FROM dual WHERE exists(SELECT OBJECT_NAME FROM user_procedures WHERE OBJECT_NAME = tempPoSpName); exception
    exception WHEN no_data_found  THEN
    WHEN no_data_found  THEN null;
        null; END;
    END; 
     IF cnt1 = 1 THEN
    IF cnt1 = 1 THEN DBMS_OUTPUT.PUT_LINE(tempPoTableName);
        DBMS_OUTPUT.PUT_LINE(tempPoTableName); tempSQL := 'ALTER TABLE 'tempPoTableName' DROP constraint PK_'tempPoTableName;
        tempSQL := 'ALTER TABLE 'tempPoTableName' DROP constraint PK_'tempPoTableName; EXECUTE IMMEDIATE tempSQL;
        EXECUTE IMMEDIATE tempSQL; tempSQL := 'ALTER TABLE 'tempPoTableName' RENAME TO 'tempPoTableName'_TMP';
        tempSQL := 'ALTER TABLE 'tempPoTableName' RENAME TO 'tempPoTableName'_TMP'; EXECUTE IMMEDIATE tempSQL;
        EXECUTE IMMEDIATE tempSQL; ELSE
    ELSE DBMS_OUTPUT.PUT_LINE('沒(méi)有找到表'tempPoTableName);
        DBMS_OUTPUT.PUT_LINE('沒(méi)有找到表'tempPoTableName); END IF;
    END IF; 
     IF cnt2 = 1 THEN
    IF cnt2 = 1 THEN tempSQL := 'DROP PROCEDURE 'tempPoSpName;
        tempSQL := 'DROP PROCEDURE 'tempPoSpName; EXECUTE IMMEDIATE tempSQL;
        EXECUTE IMMEDIATE tempSQL; ELSE
    ELSE DBMS_OUTPUT.PUT_LINE('沒(méi)有找到過(guò)程'tempPoSpName);
        DBMS_OUTPUT.PUT_LINE('沒(méi)有找到過(guò)程'tempPoSpName); END IF;
    END IF; 
     FETCH allValues_Cursor INTO tempPoTableName,tempPoSpName;
        FETCH allValues_Cursor INTO tempPoTableName,tempPoSpName; END LOOP;
    END LOOP; CLOSE allValues_Cursor;
    CLOSE allValues_Cursor; DBMS_OUTPUT.PUT_LINE('結(jié)束更改原有表名……');
    DBMS_OUTPUT.PUT_LINE('結(jié)束更改原有表名……'); DBMS_OUTPUT.PUT_LINE('------------------------');
    DBMS_OUTPUT.PUT_LINE('------------------------'); END;
    END; END;
END; /
/   Begin
Begin declare --變量
    declare --變量  --過(guò)程
        --過(guò)程 END
END GO      Oralce的總體結(jié)構(gòu)如下,需要兩個(gè)begin和end,一個(gè)是整個(gè)過(guò)程,一個(gè)是除去申明之外的過(guò)程。1
GO      Oralce的總體結(jié)構(gòu)如下,需要兩個(gè)begin和end,一個(gè)是整個(gè)過(guò)程,一個(gè)是除去申明之外的過(guò)程。1 BEGIN
BEGIN DECLARE
   DECLARE --變量
   --變量 BEGIN
   BEGIN --過(guò)程
   --過(guò)程 END;
   END; END;
END; /
/ set @tempSQL = ' declare allValues_Cursor cursor for '+CHAR(13) + CHAR(10)
    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'
        set @tempSQL =  @tempSQL + ' select POTABLENAME,POSPNAME from PM_NEPODEF_TABLE WHERE POID>110499 and POID<110580' --游標(biāo)語(yǔ)句
        --游標(biāo)語(yǔ)句 
     EXEC (@tempSQL)
        EXEC (@tempSQL) --1.創(chuàng)建游標(biāo)
        --1.創(chuàng)建游標(biāo)
 OPEN allValues_Cursor
    OPEN allValues_Cursor --2.打開(kāi)游標(biāo)
        --2.打開(kāi)游標(biāo)        
 --判定是否由符合游標(biāo)條件的行,假如沒(méi)有則關(guān)閉和釋放游標(biāo),異常返回
    --判定是否由符合游標(biāo)條件的行,假如沒(méi)有則關(guān)閉和釋放游標(biāo),異常返回 IF(@@CURSOR_ROWS = 0 )
    IF(@@CURSOR_ROWS = 0 ) BEGIN
    BEGIN CLOSE allValues_Cursor
        CLOSE allValues_Cursor DEALLOCATE allValues_Cursor
        DEALLOCATE allValues_Cursor set @errorInfo = '沒(méi)有指定表名或存儲(chǔ)過(guò)程名!'
        set @errorInfo = '沒(méi)有指定表名或存儲(chǔ)過(guò)程名!' print @errorInfo
        print @errorInfo return
        return END
    END
 WHILE  (@@FETCH_STATUS <> -1)
    WHILE  (@@FETCH_STATUS <> -1) BEGIN
    BEGIN --3進(jìn)行數(shù)據(jù)處理
        --3進(jìn)行數(shù)據(jù)處理        
 END
    END
 CLOSE allValues_Cursor
    CLOSE allValues_Cursor --4.關(guān)閉游標(biāo)
        --4.關(guān)閉游標(biāo)
 DEALLOCATE allValues_Cursor
    DEALLOCATE allValues_Cursor --5.注銷(xiāo)游標(biāo)
        --5.注銷(xiāo)游標(biāo)     --聲明中
--聲明中 Cursor allValues_Cursor is
    Cursor allValues_Cursor is select UPPER(TRIM(POTABLENAME)),UPPER(TRIM(POSPNAME)) from PM_NEPODEF_TABLE WHERE POID>110499 and POID<110580;
         select UPPER(TRIM(POTABLENAME)),UPPER(TRIM(POSPNAME)) from PM_NEPODEF_TABLE WHERE POID>110499 and POID<110580; --1.聲明游標(biāo)
         --1.聲明游標(biāo) --過(guò)程中
--過(guò)程中 OPEN allValues_Cursor;
    OPEN allValues_Cursor; --2.打開(kāi)游標(biāo)
        --2.打開(kāi)游標(biāo)
 WHILE allValues_Cursor%found LOOP
    WHILE allValues_Cursor%found LOOP FETCH allValues_Cursor INTO tempPoTableName,tempPoSpName;
    FETCH allValues_Cursor INTO tempPoTableName,tempPoSpName; --3.處理數(shù)據(jù)
        --3.處理數(shù)據(jù)
 END LOOP;
    END LOOP; CLOSE allValues_Cursor;
    CLOSE allValues_Cursor; --4.關(guān)閉游標(biāo)
        --4.關(guān)閉游標(biāo)新聞熱點(diǎn)
疑難解答
圖片精選