Oracle 資料庫 QRCODE Package 功能說明
(Java Version 0.9)
有購買需求請連繫我!
環境需求
資料庫版本 : 10.2.x , 11.x, 11.2.0.2(+), 12.x
註:11.2.01 JDBC無法接受空BLOB傳入.
另外,亦開發非DB版本給form /report 10g+使用的qrcode版本,有需求請與我聯繫.
部署Schema 必要給予資料庫權限
JAVADEBUGPRIV
JAVAIDPRIV
JAVASYSPRIV
JAVAUSERPRIV
JAVA_DEPLOY
GRANT SELECT ON SYS.DBA_DIRECTORIES TO " Schema " WITH GRANT OPTION;
XXQRCODE_PKG功能說明
/*register_file_dir : 註冊QR影像檔DB儲存之資料夾到公用變數理,方便後續不需重複呼叫
p_DIRECTORY 圖片檔資料庫DIRECTORY
*/
PROCEDURE register_file_dir(p_DIRECTORY IN VARCHAR2);
/*register_logo_file : 註冊QR logo影像檔 DB儲存之資料夾及logo 檔案名稱到公用變數理,方便後續不需重複呼叫
p_DIRECTORY 圖片檔資料庫DIRECTORY
*/
PROCEDURE register_logo_file(p_DIRECTORY IN VARCHAR2,P_FILE_NAME IN VARCHAR2);
/*encodeQRFILE : 產生qrcode 圖片檔於資料庫對應路徑 ,回傳 0 成功, 1 失敗
p_CONTENT 轉碼文字
p_DIRECTORY 圖片檔資料庫DIRECTORY
p_FILENAME 圖片檔名稱
P_IMAGE_TYPE 圖片格式,合法範圍 png,jpg(預設),bmp ,注意d2k6i 不支援png格式
P_IMAGE_SIZE 圖片大小,合法範圍 1-40, 預設7 (139*139 pixel) 3.68 CM
P_ERRCORRECT 排錯率,合法範圍 L(7%)、M(15%)、Q(25%)、H(30%) ,預設M(15%)
P_LOGO_DIRECTORY LOGO圖片檔資料庫DIRECTORY
p_LOGO_FILENAME LOGO圖片檔名稱
*/
FUNCTION encodeQRFILE(
p_CONTENT IN VARCHAR2,
p_DIRECTORY IN VARCHAR2 ,
p_FILENAME IN VARCHAR2 ,
P_IMAGE_TYPE IN VARCHAR2 DEFAULT 'jpg',
P_IMAGE_SIZE IN PLS_INTEGER DEFAULT 7,
P_ERRCORRECT IN varchar2 DEFAULT 'M',
P_LOGO_DIRECTORY IN VARCHAR2 DEFAULT NULL,
p_LOGO_FILENAME IN VARCHAR2 DEFAULT NULL ) RETURN PLS_INTEGER;
/*encodeQRBLOB : 產生qrcode 圖片檔回傳BLOB , 失敗回傳空BLOB
p_CONTENT 轉碼文字
P_IMAGE_TYPE 圖片格式,合法範圍 png,jpg(預設),bmp ,注意d2k6i不支援png格式
P_IMAGE_SIZE 圖片大小,合法範圍 1-40, 預設7 (139*139 pixel) 3.68 CM
P_ERRCORRECT 排錯率,合法範圍 L(7%)、M(15%)、Q(25%)、H(30%) ,預設M(15%)
P_LOGO_DIRECTORY LOGO圖片檔資料庫DIRECTORY
p_LOGO_FILENAME LOGO圖片檔名稱
*/
FUNCTION encodeQRBLOB(
p_CONTENT IN VARCHAR2,
P_IMAGE_TYPE IN VARCHAR2 DEFAULT 'jpg',
P_IMAGE_SIZE IN PLS_INTEGER DEFAULT 7,
P_ERRCORRECT IN varchar2 DEFAULT 'M',
P_LOGO_DIRECTORY IN VARCHAR2 DEFAULT NULL,
p_LOGO_FILENAME IN VARCHAR2 DEFAULT NULL ) RETURN BLOB;
/*decodeQRFILE : 解析qrcode 資料庫對應路徑圖片 ,回傳解析後文字 , 注意如含logo圖片, 但圖片產生時大小或容錯率設置不當,會造成無法讀取
p_DIRECTORY 圖片檔資料庫DIRECTORY
p_FILENAME 圖片檔名稱
*/
FUNCTION decodeQRFILE(
p_DIRECTORY IN VARCHAR2 DEFAULT NULL,
p_FILENAME IN VARCHAR2 DEFAULT NULL) RETURN VARCHAR2;
/*decodeQRBLOB : 解析qrcode BLOB物件,回傳解析後文字 , 注意如含logo圖片, 但圖片產生時大小或容錯率設置不當,會造成無法讀取
p_BLOB 圖片檔BLOB 物件
*/
FUNCTION decodeQRBLOB(
p_BLOB IN BLOB) RETURN VARCHAR2;
使用範例
SQL 呼叫
select XXQRCODE_PKG.encodeQRBLOB('我是QRCODE檔案') IMAGE from dual
QR圖片預覽
SQL 含LOGO呼叫 ,變更大小
select XXQRCODE_PKG.encodeQRBLOB(p_CONTENT=>'我是QRCODE檔案',P_IMAGE_SIZE=>14,P_LOGO_DIRECTORY=>'DATA_PUMP_DIR',p_LOGO_FILENAME=>'nolem.gif') image from dual
QR圖片預覽
QR圖片存入對應table blob 使用Report 6i c/s 直接取出blob執行結果,PS: 因6i 不支援sql 直接回傳lob 物件,只可存入table欄位中取出,另外方式可採路徑直接連接對應圖片,在本文檔後續檔案產生連結範疇.
資料庫資料夾檔案產生模式,單獨指定資料夾模式
select XXQRCODE_PKG.encodeQRFILE(p_CONTENT=>'我是QRCODE檔案',p_DIRECTORY=>'DATA_PUMP_DIR',p_FILENAME=>'testfile.jpg') from dual
檔案產生位置確認
檔案預覽
Report6i c/s 模式,建立CLINET 單機磁碟連接資料庫DATA_PUMP_DIR磁碟
Report 6i 連接路徑圖片
讀取QRCODE
檔案讀取模式範例
select XXQRCODE_PKG.decodeQRFILE(p_DIRECTORY=>'DATA_PUMP_DIR',p_FILENAME=>'testfile.jpg') decodecontent from dual
結果
BLOB讀取模示範例
select PHOTO_NAME, XXQRCODE_PKG.decodeQRBLOB(PHOTO_RAW) QRCODE FROM MY_EMP_PHOTO