Oracle plsql ,PDFがアップデートされたかチェック 02

## ■環境
・PHP7.4
・Linux（RedHat 8.6）
・Smarty2.4.6
・oracle12
・PLSQL
## ■完成イメージ
１：アップロード
![スクリーンショット (904).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/0b5d64a5-4755-3a57-b089-263d5abd53c2.png)
２：アップロード後
![スクリーンショット (908).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/9b2b4c49-3fbd-f57d-4da1-bbdc569b393c.png)

## ■機能説明
### 機能
・PHPから plsqlのプロシージャを呼び。
・プロシージャで、一時テーブル（テンポラリーテーブル）へPDFのアップロード情報を格納。
・PHPでプロシージャの一時テーブルの情報をSELECTして、配列へ格納。
・.tplで配列とのチェックを行う。

## ■ソース（plsql プロシージャ部分）
```plsql 
create or replace PROCEDURE PDF_CHECK_SELECT (
    p_SID IN VARCHAR2, --セッションID
    p_GYOCD IN NUMBER, --業者コード
   --- P_UKENEND IN NUMBER, -- 受付年度
   --- P_UKEDATE IN NUMBER, -- 受付番号
    p_RSLT OUT NUMBER, --ステータス(0:正常終了　99:エラー)
    p_SQLCODE OUT NUMBER, --エラーコード
    p_SQLERRM OUT VARCHAR2 --エラーメッセージ
)
 /*******************************************************************************
* 関数名 : PDF_UPCHECK
* 作成者 : 夏目智徹
* 作成日 : 2023/11/10
* 概要   : Web予約 PDF_UPロードチェック用プロシージャ


*******************************************************************************/
 /*======================================
  変数宣言
======================================*/

 IS
    
        v_GYOUSYA_CD PDF_UPDETA.業者コード%TYPE; --- 業者コード
        v_GYOUSA_MEI  PDF_UPDETA.業者名%TYPE;    --- 業者名
        v_UKETUKE_NENDO PDF_UPDETA.受付年度%TYPE;  --- 受付年度
        v_UKETUKE_NUM PDF_UPDETA.受付番号%TYPE;    --- 受付番号
        v_YOYAKU_DATE PDF_UPDETA.予約日付%TYPE;    --- 予約日付
        v_SIBOUSHA_SEI PDF_UPDETA.死亡者姓%TYPE;   --- 死亡者姓
        v_SIBOUSHA_MEI PDF_UPDETA.死亡者名%TYPE;    --- 死亡者名
 

CURSOR c_WK1 IS 
    SELECT 業者コード, 業者名, 受付年度, 受付番号, 予約日付, 死亡者姓, 死亡者名
        FROM (
            SELECT 業者コード, 業者名, 受付年度, 受付番号, 予約日付, 死亡者姓, 死亡者名,
            ROWNUM AS rnum
            FROM PDF_UPDETA
            WHERE 業者コード = p_GYOCD
        AND 予約日付 BETWEEN 
            (SELECT MIN(予約日付) FROM PDF_UPDETA WHERE 業者コード = p_GYOCD)
        AND 
            (SELECT MAX(予約日付) FROM PDF_UPDETA WHERE 業者コード = p_GYOCD)
)
WHERE rnum <= 100;

--- WHERE rnum <= 100; LIMIT 100; の役割

--- レコードの宣言
r_WK1 c_WK1%ROWTYPE;
/*======================================
  本体
======================================*/
BEGIN 
--- 初期処理
p_RSLT := 0;
p_SQLCODE := 0;
p_SQLERRM := NULL;

v_GYOUSYA_CD := 0; --- 業者コード
v_GYOUSA_MEI := NULL;    --- 業者名
v_UKETUKE_NENDO := 0;  --- 受付年度
v_UKETUKE_NUM := 0;    --- 受付番号
v_YOYAKU_DATE := NULL;    --- 予約日付
v_SIBOUSHA_SEI := NULL;   --- 死亡者姓
v_SIBOUSHA_MEI := NULL;    --- 死亡者名


 --- テンプテーブル　クリア
    DELETE FROM TMP_PDF_UPDETA
        WHERE SID = p_SID;

 --- 業者コードが NULLじゃなかった場合

        FOR r_WK1 IN c_WK1 LOOP
            
            IF r_WK1.業者コード IS NOT NULL THEN
                v_GYOUSYA_CD := r_WK1.業者コード; --- 業者コード
            END IF;
            
            IF r_WK1.業者名 IS NOT NULL THEN
                v_GYOUSA_MEI := r_WK1.業者名;    --- 業者名
            END IF;
            
            IF r_WK1.受付年度 IS NOT NULL THEN
                v_UKETUKE_NENDO := r_WK1.受付年度;  --- 受付年度
            END IF;
            
            IF r_WK1.受付番号 IS NOT NULL THEN
                v_UKETUKE_NUM := r_WK1.受付番号;    --- 受付番号
            END IF;
            
            IF r_WK1.死亡者姓 IS NOT NULL THEN
                v_SIBOUSHA_SEI := r_WK1.死亡者姓;   --- 死亡者姓
            END IF;
            
            IF r_WK1.死亡者名 IS NOT NULL THEN
                v_SIBOUSHA_MEI := r_WK1.死亡者名;    --- 死亡者名
            END IF;
        
            INSERT INTO TMP_PDF_UPDETA(
                SID,            --- セッションID
                GYOUSYA_CD,     --- 業者コード
                GYOUSA_MEI,     --- 業者名
                UKETUKE_NENDO,  --- 受付年度
                UKETUKE_NUM,    --- 受付番号
                YOYAKU_DATE,    --- 予約日付
                SIBOUSHA_SEI,   --- 死亡者姓
                SIBOUSHA_MEI    --- 死亡者名
            ) VALUES (
                p_SID,
                v_GYOUSYA_CD, --- 業者コード
                v_GYOUSA_MEI,    --- 業者名
                v_UKETUKE_NENDO,  --- 受付年度
                v_UKETUKE_NUM,    --- 受付番号
                v_YOYAKU_DATE,    --- 予約日付
                v_SIBOUSHA_SEI,   --- 死亡者姓
                v_SIBOUSHA_MEI   --- 死亡者名
            );
            END LOOP;

/*======================================
 例外処理
======================================*/
EXCEPTION
WHEN OTHERS THEN

p_RSLT := 99;
p_SQLCODE := SQLCODE;
p_SQLERRM := SQLERRM;

END;