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;