検索
最新コメント
タグクラウド
プロフィール
さんの画像

エンジニアやってます。 なんとなく、ブログ作ってみました!
ファン
<< 2018年01月 >>
1 2 3 4 5 6
7 8 9 10 11 12 13
21 22 23 24 25 26 27
28 29 30 31
最新記事
写真ギャラリー
カテゴリアーカイブ
Mac (4)
Oracle (3)
Linux (1)
MySQL (1)
WordPress (1)
XCode (1)
Excel (1)
DataStage (1)
BootCamp (1)
Sakura (1)
月別アーカイブ
日別アーカイブ

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2016年02月07日

ENCRYPT/DECRYPT(暗号化/復号化)

−− 実行権限付与
grant execute on dbms_crypto to USER_NAME;

−− 暗号化
CREATE OR REPLACE FUNCTION TEXT_ENCRYPT(pTXT VARCHAR2, pPwd VARCHAR2)
RETURN VARCHAR2
IS
vEncrypted RAW(1000);
BEGIN
vEncrypted := DBMS_CRYPTO.ENCRYPT(
src => UTL_I18N.STRING_TO_RAW (pTXT, 'AL32UTF8'),
typ => DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC
+ DBMS_CRYPTO.PAD_PKCS5,
key => UTL_I18N.STRING_TO_RAW(RPAD(pPwd, 32, CHR(0)), 'AL32UTF8'));
RETURN UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(vEncrypted));
END;
/

−− 復号化
CREATE OR REPLACE FUNCTION TEXT_DECRYPT(pEncTxt VARCHAR2, pPwd VARCHAR2)
RETURN VARCHAR2
IS
vRaw RAW(1000);
BEGIN
vRaw := UTL_ENCODE.BASE64_DECODE(UTL_RAW.CAST_TO_RAW(pEncTxt));
vRaw := DBMS_CRYPTO.DECRYPT(
src => vRaw,
typ => DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC
+ DBMS_CRYPTO.PAD_PKCS5,
key => UTL_I18N.STRING_TO_RAW(RPAD(pPwd, 32, CHR(0)), 'AL32UTF8'));
RETURN UTL_I18N.RAW_TO_CHAR (vRaw, 'AL32UTF8');
END;
/
posted by itc at 23:00| Comment(0) | TrackBack(0) | Oracle

(PL/SQL)INSERTでRETURNING句

CREATE OR REPLACE PROCEDURE TEST.TBL_INSERT
IS
vUser TABLE_NAME%ROWTYPE;
BEGIN
INSERT INTO USER_MASTER (USER_ID, USER_NAME) VALUES ('0001', '鈴木 一')
RETURNING USER_ID, USER_NAME INTO vUser;
DBMS_OUTPUT.PUT_LINE('インサートした件数は' || SQL%ROWCOUNT || '件です。');
DBMS_OUTPUT.PUT_LINE('インサートしたUSER_IDは' || vUser.USER_ID || 'です。');
END;
/
posted by itc at 22:26| Comment(0) | TrackBack(0) | Oracle

2015年06月08日

プロシージャ定義&呼出(Oracle)



-- 1.プロシージャ定義(パッケージ)


CREATE OR REPLACE PACKAGE PACK_PROC_SAMPLE
IS
PROCEDURE PROC_SAMPLE(
p_syori_kbn_i IN CHAR,
p_irai_no_i IN OUT CHAR,
p_irai_naiyou_o OUT VARCHAR2,
p_result_o OUT NUMBER
);
END;
/



-- 2.プロシージャ定義(パッケージ本体)


CREATE OR REPLACE PACKAGE BODY PACK_PROC_SAMPLE
IS
-- 定数宣言
c_proc_name CONSTANT VARCHAR(30) := 'PROC_SAMPLE';
-- 例外宣言
SYSTEM_ERROR EXCEPTION;
VALID_ERROR EXCEPTION;

PROCEDURE PROC_SAMPLE(
p_syori_kbn_i IN CHAR,
p_irai_no_i IN OUT CHAR,
p_irai_naiyou_o OUT VARCHAR2,
p_result_o OUT NUMBER
)
IS
-- 定数宣言
CHECK_OK CONSTANT PLS_INTEGER :=0;
PRM_ERR CONSTANT PLS_INTEGER :=1;
SYS_ERR CONSTANT PLS_INTEGER :=2;

BEGIN
-- 開始ログ出力
DBMS_OUTPUT.PUT_LINE( TO_CHAR(SYSTIMESTAMP,'yyyy/mm/dd hh24:mi:ss.ff3' || ' 処理開始');

-- 初期化
p_result_o := CHECK_OK;

-- 入力パラメタチェック
IF p_syori_kbn_i IS NULL
p_result_o := PRM_ERR;
RAISE VALID_ERROR;
END IF;

-- SQL CALL
SELECT A.IRAI_NAIYOU INTO p_irai_naiyou_o
FROM (
SELECT
IRAI_TBL.ID,
IRAI_TBL.IRAI_NAOYO
FROM IRAI_TBL
WHERE IRAI_TBL.IRAI_NO = p_irai_no_i
ORDER BY IRAI_TBL.ID DESC
) A
WHERE ROWNUM = 1;

-- 終了ログ出力
DBMS_OUTPUT.PUT_LINE( TO_CHAR(SYSTIMESTAMP,'yyyy/mm/dd hh24:mi:ss.ff3' || ' 処理終了');

-- 例外処理
EXCEPTION
WHEN VALID_ERROR THEN
DBMS_OUTPUT.PUT_LINE( TO_CHAR(SYSTIMESTAMP,'yyyy/mm/dd hh24:mi:ss.ff3' || ' VALID_ERROR');

WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE( TO_CHAR(SYSTIMESTAMP,'yyyy/mm/dd hh24:mi:ss.ff3' || ' OTHERS EXCEPTION');
p_result_o := SYS_ERR;

END PROC_SAMPLE;
END PACK_PROC_SAMPLE;
/



-- 3.プロシージャ呼出


-- 初期設定
SET TERMOUT OFF
SET TIMING OFF
SET SERVEROUTPUT OFF
SET ECHO OFF
SET LINE 2000

-- 変数定義
VARIABLE p_syori_kbn_i CHAR(1)
VARIABLE p_irai_no_i CHAR(10)
VARIABLE p_irai_naiyou_o VARCHAR2(30)
VARIABLE p_result_o NUMBER

-- 変数設定
BEGIN
:p_syori_kbn_i := '1';
:p_irai_no_i := '1234567890';
END;
/

-- ログ出力
SPOOL CALL_PROC_SAMPLE.log REPLACE

SET HEADING OFF
SELECT '#INPUT#' FROM DUAL;
SELECT 'p_syori_kbn_i : ' || :p_syori_kbn_i FROM DUAL;
SELECT 'p_irai_no_i : ' || :p_irai_no_i FROM DUAL;
SELECT TO_CHAR(SYSTIMESTAMP,'yyyy/mm/dd hh24:mi:ss.ff3' || ' ### PROC START ###' FROM DUAL;
SET HEADING ON
SET SERVEROUTPUT ON

CALL PROC_SAMPLE(:p_syori_kbn_i,:p_irai_no_i,:p_irai_naiyou_o,:p_result_o);

SET SERVEROUTPUT OFF
SET HEADING OFF
SELECT TO_CHAR(SYSTIMESTAMP,'yyyy/mm/dd hh24:mi:ss.ff3' || ' ### PROC END ###' FROM DUAL;
SELECT '#OUTPUT#' FROM DUAL;
SELECT 'p_syori_kbn_i : ' || :p_syori_kbn_i FROM DUAL;
SELECT 'p_irai_no_i : ' || :p_irai_no_i FROM DUAL;
SELECT 'p_irai_naiyou_o : ' || :p_irai_naiyou_o FROM DUAL;
SELECT 'p_result_o : ' || :p_result_o FROM DUAL;
SET HEADING ON

-- ログ出力終了
SPOOL OFF
posted by itc at 23:18| Comment(0) | TrackBack(0) | Oracle
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: