Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

plsql से बाहर/वापसी में CLOB मान (अवैध LOB लोकेटर निर्दिष्ट:ORA-22275)

इस समय:

    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 . में उपयोग करें जैसा कि आपके संपादित प्रश्न में है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL परिणाम में संख्याओं को शब्दों में बदलना! क्वेरी का उपयोग करना

  2. to_char फ़ंक्शन के कारण Oracle अमान्य संख्या

  3. SQLPlus varchar2 व्हाइटस्पेस आउटपुट करता है

  4. Oracle त्रुटि ORA-01790 को कैसे हल करें?

  5. डीबी अनुक्रम प्रारंभ मूल्य कैसे बदलें