alexandria-plsql-utils/ora/sql_util_pkg.pkb
2015-02-20 19:43:42 +01:00

193 lines
3.9 KiB
Plaintext
Executable File

create or replace package body sql_util_pkg
as
/*
Purpose: Package contains various SQL utilities
Remarks:
Who Date Description
------ ---------- -------------------------------------
MBR 01.01.2008 Created
*/
function make_rows (p_number_of_rows in number) return t_num_array pipelined
as
begin
/*
Purpose: make specified number of rows
Remarks:
Who Date Description
------ ---------- -------------------------------------
MBR 01.01.2008 Created
*/
for i in 1 .. p_number_of_rows loop
pipe row (i);
end loop;
return;
end make_rows;
function make_rows (p_start_with in number,
p_end_with in number) return t_num_array pipelined
as
begin
/*
Purpose: make rows in specified range
Remarks:
Who Date Description
------ ---------- -------------------------------------
MBR 01.01.2008 Created
*/
for i in p_start_with .. p_end_with loop
pipe row (i);
end loop;
return;
end make_rows;
--function clob_to_blob (p_clob in clob) return blob
--as
-- l_pos pls_integer := 1;
-- l_buffer raw(32767);
-- l_lob_len pls_integer := dbms_lob.getlength(p_clob);
-- l_returnvalue blob;
--begin
-- /*
-- Purpose: convert clob to blob
-- Remarks: see http://forums.oracle.com/forums/thread.jspa?threadID=491821
-- Who Date Description
-- ------ ---------- -------------------------------------
-- MBR 01.01.2008 Created
--
-- */
-- dbms_lob.createtemporary(l_returnvalue, false);
-- dbms_lob.open(l_returnvalue, dbms_lob.lob_readwrite);
-- loop
-- l_buffer := utl_raw.cast_to_raw (dbms_lob.substr(p_clob, 16000, l_pos));
-- if utl_raw.length (l_buffer) > 0 then
-- dbms_lob.writeappend(l_returnvalue, utl_raw.length(l_buffer), l_buffer);
-- end if;
-- l_pos := l_pos + 16000;
-- exit when l_pos > l_lob_len;
--
-- end loop;
-- return l_returnvalue;
--end clob_to_blob;
function clob_to_blob (p_clob in clob) return blob
as
l_returnvalue blob;
l_dest_offset integer := 1;
l_source_offset integer := 1;
l_lang_context integer := dbms_lob.default_lang_ctx;
l_warning integer := dbms_lob.warn_inconvertible_char;
BEGIN
/*
Purpose: convert clob to blob
Remarks: see http://www.dbforums.com/oracle/1624851-clob-blob.html
Who Date Description
------ ---------- -------------------------------------
MBR 25.01.2011 Created
*/
dbms_lob.createtemporary (l_returnvalue, true);
dbms_lob.converttoblob
(
dest_lob => l_returnvalue,
src_clob => p_clob,
amount => dbms_lob.getlength(p_clob),
dest_offset => l_dest_offset,
src_offset => l_source_offset,
blob_csid => dbms_lob.default_csid,
lang_context=> l_lang_context,
warning => l_warning
);
return l_returnvalue;
end clob_to_blob;
function blob_to_clob (p_blob in blob) return clob
as
l_returnvalue clob;
l_dest_offset integer := 1;
l_source_offset integer := 1;
l_lang_context integer := dbms_lob.default_lang_ctx;
l_warning integer := dbms_lob.warn_inconvertible_char;
BEGIN
/*
Purpose: convert blob to clob
Remarks:
Who Date Description
------ ---------- -------------------------------------
MBR 25.01.2011 Created
*/
dbms_lob.createtemporary (l_returnvalue, true);
dbms_lob.converttoclob
(
dest_lob => l_returnvalue,
src_blob => p_blob,
amount => dbms_lob.lobmaxsize,
dest_offset => l_dest_offset,
src_offset => l_source_offset,
blob_csid => dbms_lob.default_csid,
lang_context=> l_lang_context,
warning => l_warning
);
return l_returnvalue;
end blob_to_clob;
end sql_util_pkg;
/