PROCEDURE FILL_TEMPLATE (doc_id IN docs.ID%TYPE)
IS
doc_row docs%ROWTYPE;
result_doc CLOB := EMPTY_CLOB;
extension VARCHAR2 (10) := '';
extention_error EXCEPTION;
PRAGMA EXCEPTION_INIT (extention_error, -987654);
convert_warn INTEGER;
search_str VARCHAR2 (20) := 'ASD;
replace_str VARCHAR2 (30) := 'DSA';
dest_offset INTEGER := 1;
src_offset INTEGER := 1;
lang_context INTEGER := DBMS_LOB.default_lang_ctx;
csid INTEGER := DBMS_LOB.default_csid;
BEGIN
-- Get file info by id (doc_id - primary key)
SELECT ID.*
INTO doc_row
FROM docs ID
WHERE ID.ID = doc_id;
extension := SUBSTR (doc_row.NAME, INSTR (doc_row.NAME, '.', -1));
-- Now we check extension.
IF LOWER (extension) != LOWER (file_extension)
THEN
RAISE extention_error;
END IF;
-- Convert BLOB to CBLOB.
DBMS_LOB.converttoclob (result_doc,
doc_row.blob_content,
DBMS_LOB.getlength (doc_row.blob_content),
dest_offset,
src_offset,
csid,
lang_context,
convert_warn
);
SELECT REPLACE (result_doc, search_str, replace_str)
INTO result_doc
FROM DUAL;
...
...
...
EXCEPTION
WHEN extention_error
THEN
something;
WHEN OTHERS
THEN
somthing;
END; |