見出し画像

Oracle PLSQL and PHP smarty 2782年カオス01

■項目:PLSQL 
・機能
PDF(埋火葬許可書)がアップロードされたかチェック用のデータを作成

・PDF_UPCHECK
CREATE OR REPLACE PROCEDURE PDF_UPCHECK (

CREATE OR REPLACE PROCEDURE PDF_UPCHECK (

    P_GYOCD IN NUMBER, --業者コード

    P_UKENEND IN NUMBER, -- 受付年度

    P_UKECD IN NUMBER, -- 受付番号

    P_RSLT OUT NUMBER, --ステータス(0:正常終了 99:エラー)

    P_SQLCODE OUT NUMBER, --エラーコード

    P_SQLERRM OUT VARCHAR2 --エラーメッセージ

)

 /*******************************************************************************

* 関数名 : PDF_UPCHECK

* 作成者 : 夏目智徹

* 作成日 : 2023/11/10

* 概要   : Web予約 PDF_UPロードチェック用プロシージャ

* 機能   : PDF(埋火葬許可書)がアップロードされたかチェック用のデータを作成

* 履歴   : 2023/11/10    夏目      新規

*          

※=== 予約時間もパラメータで渡せるので、必要に応じて追加できる。

暗証番号

予約日

死亡者姓

死亡者名

取得して、INSERT

*******************************************************************************/

 /*======================================

  変数宣言

======================================*/ IS

    CURSOR C_WK1 IS

    SELECT

        業者コード,

        業者名,

        受付年度,

        受付番号,

        予約日付,

        死亡者姓,

        死亡者名

    FROM

        火葬受付

    WHERE

        業者コード = P_GYOCD --- 業者コード

        AND 受付年度 = P_UKENEND --- 受付年度

        AND 受付番号 = P_UKECD --- 受付番号

        AND 死亡者姓 IS NOT NULL;

 --レコード宣言

    R_WK1 C_WK1%ROWTYPE;

 /*======================================

  本体

======================================*/

BEGIN

 --初期処理

    P_RSLT := 0;

    P_SQLCODE := 0;

    P_SQLERRM := NULL;

 -- カーソルオープン

    OPEN C_WK1;

 -- カーソルフェッチ

    FETCH C_WK1 INTO R_WK1;

    IF C_WK1%FOUND THEN

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

        IF P_GYOCD IS NOT NULL THEN

            INSERT INTO PDF_UPDETA (

                業者コード,

                業者名,

                受付年度,

                受付番号,

                予約日付,

                死亡者姓,

                死亡者名

            ) VALUES (

                R_WK1.業者コード,

                R_WK1.業者名,

                R_WK1.受付年度,

                R_WK1.受付番号,

                R_WK1.予約日付,

                R_WK1.死亡者姓,

                R_WK1.死亡者名

            );

        END IF;

    ELSE

        DBMS_OUTPUT.PUT_LINE('Fetchができない');

    END IF;

 -- カーソルクローズ

    CLOSE C_WK1;

 /*======================================

 例外処理

======================================*/

EXCEPTION

    WHEN OTHERS THEN

        P_RSLT := 99;

        P_SQLCODE := SQLCODE;

        P_SQLERRM := SQLERRM;

END;

 

■PDF_CHECK_SELECT

・PDF_UPCHECK のプロシージャで、インサートしたテーブルから、SELECTして抽出したデータを、PDFがアップロードされているかのチェック判別で使うように、テンポラリーテーブルへインサートする。

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ロードチェック用プロシージャ
* 機能   : PDF(埋火葬許可書)がアップロードされたかチェック用のデータを作成
* 履歴   : 2023/11/10    夏目      新規
*          

※=== 予約時間もパラメータで渡せるので、必要に応じて追加できる。

暗証番号
予約日
死亡者姓
死亡者名
取得して、INSERT

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

 IS

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;


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

 --- 業者コードが NULLじゃなかった場合
    IF p_GYOCD IS NOT NULL THEN

        FOR r_WK1 IN c_WK1 LOOP
            INSERT INTO TMP_PDF_UPDETA(
                SID,            --- セッションID
                GYOUSYA_CD,     --- 業者コード
                GYOUSA_MEI,     --- 業者名
                UKETUKE_NENDO,  --- 受付年度
                UKETUKE_NUM,    --- 受付番号
                YOYAKU_DATE,    --- 予約日付
                SIBOUSHA_SEI,   --- 死亡者姓
                SIBOUSHA_MEI    --- 死亡者名
            ) VALUES (
                p_SID,
                r_WK1.業者コード,
                r_WK1.業者名,
                r_WK1.受付年度,
                r_WK1.受付番号,
                r_WK1.予約日付,
                r_WK1.死亡者姓,
                r_WK1.死亡者名
            );
            END LOOP;

    END IF;

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

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

END;

いいなと思ったら応援しよう!