इस समय:
dbms_lob.loadclobfromfile(
DEST_LOB => l_clob
... आपका l_clob
OUT पैरामीटर प्रारंभ नहीं किया गया है। इसे एक खाली CLOB बनाना भी काम नहीं करता है (इसलिए भले ही आपने l_clob
बनाया हो एक इन आउट पैरामीटर यह अभी भी शिकायत करेगा) के लिए प्रलेखन के रूप में empty_clob
उल्लेख
:
dbms_lob.createtemporary(l_clob, true)
पर कॉल जोड़कर आप इसके बजाय एक अस्थायी CLOB का उपयोग कर सकते हैं इससे पहले कि आप इसका उपयोग करने का प्रयास करें:
...
begin
l_bfile := bfilename( 'SCHEMES_OF_PS', p_file_name );
dbms_lob.fileopen( l_bfile );
dbms_lob.createtemporary(l_clob, true);
dbms_lob.loadclobfromfile(
DEST_LOB => l_clob
...
और फिर जब आप इसे कॉल करते हैं तो आपको प्रारंभिक खाली मान देने की आवश्यकता नहीं होती है:
declare
myVal clob;
begin
dbst_load_a_file('Konotop.svg', myVal);
DBMS_OUTPUT.PUT_LINE(myVal);
end;
/
यह एक फ़ंक्शन के रूप में भी काम करता है:
create or replace
function dbst_load_a_file( p_file_name in varchar2) return clob
as
l_clob clob;
l_bfile bfile;
dst_offset number := 1 ;
src_offset number := 1 ;
lang_ctx number := DBMS_LOB.DEFAULT_LANG_CTX;
warning number;
begin
l_bfile := bfilename( 'SCHEMES_OF_PS', p_file_name );
dbms_lob.fileopen( l_bfile );
dbms_lob.createtemporary(l_clob, true);
dbms_lob.loadclobfromfile(
DEST_LOB => l_clob
, SRC_BFILE => l_bfile
, AMOUNT => dbms_lob.getlength( l_bfile )
, DEST_OFFSET => dst_offset
, SRC_OFFSET => src_offset
, BFILE_CSID => DBMS_LOB.DEFAULT_CSID
, LANG_CONTEXT => lang_ctx
, WARNING => warning);
dbms_lob.fileclose( l_bfile );
return l_clob;
end;
/
select dbst_load_a_file('Konotop.svg') from dual;
या एक insert
. में उपयोग करें जैसा कि आपके संपादित प्रश्न में है।