・ロ。シ・爨ヒフ皃
テク「。ヲフネタユ。。サ

PL/SQL Sample。ァニーナェSQL

*** ニーナェ、ヒDDLハク、ッケヤ、ケ、セケ遉マ。「・。シ・、ヌ、マ、ハ、ッ・キ・ケ・ニ・犧「クツ、ャノャヘラ、ヌ、ケ。ハホ罍ァGRANT CREATE TABLE TO USER ;。ヒ



CREATE OR REPLACE PROCEDURE SP_Column_Su
    ( i_TABLE        IN    VARCHAR2
    , oCNT1          OUT   NUMBER
    , oCNT2          OUT   NUMBER
    , nRET           OUT   NUMBER
    )
/******************************************************************************
**  ・ラ・・キ・ク・耄セ。。。。。ァSP_Column_Su
**  ネヌソ。。。。。。。。。。。。ァ01
**  オ。ヌスウオヘラ。。。。。。。。。ァー」ヌナマ、オ、、ソ・ニ。シ・ヨ・、ホケ猯ワソネ・サ。シ・ヨ・ニ。シ・ヨ・、ホケ猯ワソ豕モ、ケ、
**                    IN    i_TABLE    ス靉ミセン・ニ。シ・ヨ・フセ
**                    OUT   oCNT1      シツノスケ猯ワソ
**                    OUT   oCNT2      ・サ。シ・ヨノスケ猯ワソ
**                    OUT   nRET       フ皃テヘ
**  ・ー・。シ・ミ・。。。。。。。ァnone:
******************************************************************************/
AS
    /* 灼鴫失ハムソホトオチ */
     S_SQL VARCHAR2(1000);  -- 」モ」ム」フハクウハヌシヘムハムソ
     S_CUR INTEGER;         -- ・ォ。シ・ス・ヘムハムソ
     S_EXE INTEGER;         -- シツケヤヘムハムソ
     CNT1  NUMBER;          -- ・。シ・ッハムソハ」アネヨフワ、ホケ猯ワ。ヒ
     CNT2  NUMBER;          -- ・。シ・ッハムソハ」イネヨフワ、ホケ猯ワ。ヒ

BEGIN
     /****** SELECT ******************************************************************/
     S_SQL := '';           -- SQLコタョ
     S_SQL := S_SQL || 'SELECT ZITU.CNT CNT1 ,SAVE.CNT CNT2 ';
     S_SQL := S_SQL || '  FROM (SELECT COUNT(*) CNT FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = ''XXX'' ) ZITU';        -- シツノス
     S_SQL := S_SQL || '     , (SELECT COUNT(*) CNT FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = ''SAVE_XXX'' ) SAVE';   -- ・サ。シ・ヨノス

     S_SQL := REPLACE(S_SQL,'XXX',i_TABLE);                     -- ハクサイ"XXX"、_TABLE、ヌテヨ、ュエケ、ィ、゛、ケ
     -- DBMS_OUTPUT.PUT_LINE('S_SQL = ' || S_SQL );             -- DEBUG

     S_CUR := DBMS_SQL.OPEN_CURSOR;                             -- ・ォ。シ・ス・・ェ。シ・ラ・
     DBMS_SQL.PARSE(S_CUR,S_SQL,DBMS_SQL.V7);                   -- 」モ」ム」フハク、ホ・サ・テ・ネ。ハ。ヨDBMS_SQL.V7。ラ、マ、ェコヒ。。ヒ
     DBMS_SQL.DEFINE_COLUMN(S_CUR,1,CNT1);                      -- ・ォ・鬣狢クタ      。ハNUMBERキソーハウー、ホキソ、ヌ、マキ蠢リト遙ヒ
     DBMS_SQL.DEFINE_COLUMN(S_CUR,2,CNT2);                      -- ・ォ・鬣狢クタ
     S_EXE := DBMS_SQL.EXECUTE(S_CUR);                          -- ・ォ。シ・ス・シツケヤ    。ハ」モ」ム」フハク、ホイマキイフ、ャS_EXE、ヒニ。ヒ

     IF DBMS_SQL.FETCH_ROWS(S_CUR) < 1 THEN                     -- ・ユ・ァ・テ・チ
        nRET := 9;
     END IF;

     DBMS_SQL.COLUMN_VALUE(S_CUR,1,CNT1);                       -- 」アネヨフワ、ホ・ヌ。シ・ソ、ヨCNT1。ラ、ヒシ隍スミ、ケ
     DBMS_SQL.COLUMN_VALUE(S_CUR,2,CNT2);                       -- 」イネヨフワ、ホ・ヌ。シ・ソ、ヨCNT2。ラ、ヒシ隍スミ、ケ
     -- DBMS_OUTPUT.PUT_LINE('CNT1 = ' || CNT1 );               -- DEBUG
     -- DBMS_OUTPUT.PUT_LINE('CNT2 = ' || CNT2 );               -- DEBUG
     DBMS_SQL.CLOSE_CURSOR(S_CUR);                              -- ・ォ。シ・ス・・ッ・。シ・コ

     /****** UPDATE ******************************************************************/
     IF CNT1 = CNT2 THEN
        S_SQL := 'UPDATE SAMPLE_TABLE SET ERR_KBN = ''0'' WHERE TABLE_NAME = ''XXX''';
     ELSE
        S_SQL := 'UPDATE SAMPLE_TABLE SET ERR_KBN = ''9'' WHERE TABLE_NAME = ''XXX''';
     END IF;
     S_SQL := REPLACE(S_SQL,'XXX',i_TABLE);                     -- "XXX"、ヨ、ュエケ、ィ
     -- DBMS_OUTPUT.PUT_LINE('S_SQL = ' || S_SQL );             -- DEBUG

     S_CUR := DBMS_SQL.OPEN_CURSOR;                             -- ・ォ。シ・ス・・ェ。シ・ラ・
     DBMS_SQL.PARSE(S_CUR,S_SQL,DBMS_SQL.V7);                   -- 」モ」ム」フハク、ホ・サ・テ・ネ
     S_EXE := DBMS_SQL.EXECUTE(S_CUR);                          -- ・ォ。シ・ス・シツケヤ
 

  -- フ皃テヘ・サ・テ・ネ
     oCNT1 := CNT1;
     oCNT2 := CNT2;

     IF oCNT1 IS NULL OR oCNT2 IS NULL OR ( oCNT1 = 0 AND oCNT2 = 0 ) THEN
        nRET := 9;            -- ウコナニ。シ・ヨ・、ハ、キ
     ELSIF oCNT1 <> oCNT2 THEN
        nRET := 1;            -- ケ猯ワソャー网ヲ
     ELSE
        nRET := 0;            -- ケ猯ワソャニア、ク
     END IF;

EXCEPTION
    /*** チエ、ニ、ホ・ィ・鬘シ、ホセケ ***/
    WHEN OTHERS THEN

        /* フ皃テヘ、ホタ゜ト */
        nRET := SQLCODE;   -- ーロセスェホサ
END SP_Column_Su;
/
SHOW ERRORS
 


Copyright (C) 1999 System Infinity Corporation. All rights reserved.