2017-08-23 11 views
0

文字列リテラルが長すぎる私は、テーブルに値を挿入しようとするが、私は常にORA-01704のようなエラーが表示されます。オラクルは、ORA-01704のようなエラーが表示されます。

CREATE TABLE PKI_CERT_DETAILS 
(
    ID   NUMBER(10)   NOT NULL, 
    CERTIFICATE BLOB, 
    TYPE   VARCHAR2(20 Byte) DEFAULT NULL, 
    ALIAS  VARCHAR2(50 Byte) DEFAULT '', 
    PASS   VARCHAR2(50 Byte) DEFAULT NULL, 
    CUSTOMER_ID VARCHAR2(20 Byte) DEFAULT '', 
    CHECK (id > 0) 
) 
以下のような文字列リテラルが長すぎる

私のテーブル構造

INSERT INTO ASP_DB.PKI_CERT_DETAILS (ID, CERTIFICATE, TYPE, ALIAS, PASS, CUSTOMER_ID) 
VALUES (41, 
     '2D2D2D2D2D424547494E2043455254494649434154452D2D2D2D2D0A4D4949435844434341662B674177494241674942426A414D42676771686B6A4F50515144416755414D4838784C7A417442674E5642414D544A6C5974533256350A4946526C63335167535735305A584A745A5752705958526C49454E4249454E6C636E52705A6D6C6A5958526C4D525977464159445651514B457731574C55746C0A65534251644755675448526B4D513077437759445651514C457752574C5539544D517377435159445651514845774A54527A454C4D416B474131554543424D430A55306378437A414A42674E5642415954416C4E484D423458445445334D4451774D6A41314D7A67774D566F5844544D794D4445774D5441774D4441774D466F770A675949784D6A417742674E5642414D544B565974533256354946526C633351675532566C5A476C755A79424A63334E316157356E49454E4249454E6C636E52700A5A6D6C6A5958526C4D525977464159445651514B457731574C55746C65534251644755675448526B4D513077437759445651514C457752574C5539544D5173770A435159445651514845774A54527A454C4D416B474131554543424D4355306378437A414A42674E5642415954416C4E484D466B77457759484B6F5A497A6A30430A415159494B6F5A497A6A30444151634451674145523335545057534952695136733059574278534C334874634C636C77304B342B634D753859724149786644480A734D6A5772313378682F6B61596252416B2B37655A473570564D36474F61532B704751382F5968684B614E6D4D47517745675944565230544151482F424167770A426745422F7749424144414F42674E56485138424166384542414D4341595977487759445652306A42426777466F4155797832766D7859796E5045674473326F0A584E414A65575741594E7777485159445652304F424259454642696D717330786D4336415072694E4E564B6252486B49796954374D41774743437147534D34390A42414D43425141445351417752674968414D686554306442673748754A4855515A6A5A714C3249557965376641466474694958783659586F66364272416945410A38704E686665592F74346737626C5A4B49306F6C614B4C33693742302F436657633154786B57637A6F68493D0A2D2D2D2D2D454E442043455254494649434154452D2D2D2D2D0A2D2D2D2D2D424547494E2043455254494649434154452D2D2D2D2D0A4D4949435544434341664F6741774942416749424244414D42676771686B6A4F50515144416755414D4863784A7A416C42674E5642414D54486C5974533256350A4946526C63335167556D397664434244515342445A584A3061575A70593246305A5445574D4251474131554543684D4E5669314C5A586B675548526C494578300A5A44454E4D4173474131554543784D4556693150557A454C4D416B474131554542784D4355306378437A414A42674E5642416754416C4E484D517377435159440A5651514745774A54527A4165467730784E7A41304D4449774E5441334D7A68614677307A4E5441784D4445774D4441774D4442614D4838784C7A417442674E560A42414D544A6C5974533256354946526C63335167535735305A584A745A5752705958526C49454E4249454E6C636E52705A6D6C6A5958526C4D525977464159440A5651514B457731574C55746C65534251644755675448526B4D513077437759445651514C457752574C5539544D517377435159445651514845774A54527A454C0A4D416B474131554543424D4355306378437A414A42674E5642415954416C4E484D466B77457759484B6F5A497A6A3043415159494B6F5A497A6A3044415163440A5167414569386E762F7064524238517064546A79766F4742436F41496E3370556D4E3544447A6D586D6B6A623153476E4A7277345533794C2B4272684C4543330A502F76666B5A364170306A32333866415233754E566C49527A4B4E6D4D47517745675944565230544151482F42416777426745422F7749424154414F42674E560A485138424166384542414D4341595977487759445652306A42426777466F41553656306B6278417571485258433955596465644A7155554A566C4177485159440A5652304F42425945464D7364723573574D707A784941374E71467A5143586C6C674744634D41774743437147534D343942414D434251414453514177526749680A41505252626D5056685468357376502F4C492F6B6D6A4C57346C527755747778714B7A5070767A337A63393241694541726A614E5732392F61696D54567A6B4B0A47676D7675684A43494E42464F496E53355344556C3646375A45673D0A2D2D2D2D2D454E442043455254494649434154452D2D2D2D2D0A2D2D2D2D2D424547494E2043455254494649434154452D2D2D2D2D0A4D49494353444343416575674177494241674942416A414D42676771686B6A4F50515144416755414D4863784A7A416C42674E5642414D54486C5974533256350A4946526C63335167556D397664434244515342445A584A3061575A70593246305A5445574D4251474131554543684D4E5669314C5A586B675548526C494578300A5A44454E4D4173474131554543784D4556693150557A454C4D416B474131554542784D4355306378437A414A42674E5642416754416C4E484D517377435159440A5651514745774A54527A4165467730784E7A41304D4449774E5441324D6A46614677307A4E7A41784D4445774D4441774D4442614D4863784A7A416C42674E560A42414D54486C5974533256354946526C63335167556D397664434244515342445A584A3061575A70593246305A5445574D4251474131554543684D4E5669314C0A5A586B675548526C494578305A44454E4D4173474131554543784D4556693150557A454C4D416B474131554542784D4355306378437A414A42674E56424167540A416C4E484D517377435159445651514745774A54527A425A4D424D4742797147534D34394167454743437147534D34394177454841304941424D4179396845310A662B435045526457684D6F4F51534F7433716264546D4166374B762F6C706F544B657633366A34796C426D7A375A45345839394B7253613770476F6E334743620A54565A746A4543674854537A75776D6A5A6A426B4D42494741315564457745422F7751494D415942416638434151497744675944565230504151482F424151440A416747474D42384741315564497751594D426141464F6C644A4738514C716830567776564748586E53616C4643565A514D4230474131556444675157424254700A585352764543366F6446634C3152683135306D7052516C575544414D42676771686B6A4F505151444167554141306B414D455943495144426B47484169516A520A4C763361634A745A636561347A75682B62372B527A7149725275396A4C7578704A674968414E7A3155554A483433657A575579637A31333939584153473849450A6D326C30392F655379766562576B6D330A2D2D2D2D2D454E442043455254494649434154452D2D2D2D2D0A', 
     'PREGEN', 
     NULL, 
     NULL, 
     '78'); 

以下のような

と私の挿入スクリプトは、この問題を解決するために私を助けてください。おかげ

+0

SQLでは、文字列の長さは4000文字までです。上記のplsqlの例を参照してください。 – Rene

答えて

1

コードの下に多くの(バインド変数を使用することによって、「実際にハードの解析を避けるために必ず使用しなければならない」)作品:

declare 
    v_blob  blob; 
    v_id  PKI_CERT_DETAILS.id%type; 
    v_customer PKI_CERT_DETAILS.customer_id%type; 
    v_type  PKI_CERT_DETAILS.type%type; 
    v_alias  PKI_CERT_DETAILS.alias%type; 
    v_pass  PKI_CERT_DETAILS.pass%type; 

    FUNCTION c2b(c IN CLOB) RETURN BLOB 
    -- typecasts CLOB to BLOB (binary conversion) 
    IS 
    pos PLS_INTEGER := 1; 
    buffer RAW(32767); 
    res BLOB; 
    lob_len PLS_INTEGER := DBMS_LOB.getLength(c); 
    BEGIN 
    DBMS_LOB.createTemporary(res, TRUE); 
    DBMS_LOB.OPEN(res, DBMS_LOB.LOB_ReadWrite); 

    LOOP 
    buffer := UTL_RAW.cast_to_raw(DBMS_LOB.SUBSTR(c, 16000, pos)); 

    IF UTL_RAW.LENGTH(buffer) > 0 THEN 
    DBMS_LOB.writeAppend(res, UTL_RAW.LENGTH(buffer), buffer); 
    END IF; 

    pos := pos + 16000; 
    EXIT WHEN pos > lob_len; 
    END LOOP; 

    RETURN res; 
    END c2b; 
begin 
    v_blob := c2b('2D2D2D2D2D424547494E2043455254494649434154452D2D2D2D2D0A4D4949435844434341662B674177494241674942426A414D42676771686B6A4F50515144416755414D4838784C7A417442674E5642414D544A6C5974533256350A4946526C63335167535735305A584A745A5752705958526C49454E4249454E6C636E52705A6D6C6A5958526C4D525977464159445651514B457731574C55746C0A65534251644755675448526B4D513077437759445651514C457752574C5539544D517377435159445651514845774A54527A454C4D416B474131554543424D430A55306378437A414A42674E5642415954416C4E484D423458445445334D4451774D6A41314D7A67774D566F5844544D794D4445774D5441774D4441774D466F770A675949784D6A417742674E5642414D544B565974533256354946526C633351675532566C5A476C755A79424A63334E316157356E49454E4249454E6C636E52700A5A6D6C6A5958526C4D525977464159445651514B457731574C55746C65534251644755675448526B4D513077437759445651514C457752574C5539544D5173770A435159445651514845774A54527A454C4D416B474131554543424D4355306378437A414A42674E5642415954416C4E484D466B77457759484B6F5A497A6A30430A415159494B6F5A497A6A30444151634451674145523335545057534952695136733059574278534C334874634C636C77304B342B634D753859724149786644480A734D6A5772313378682F6B61596252416B2B37655A473570564D36474F61532B704751382F5968684B614E6D4D47517745675944565230544151482F424167770A426745422F7749424144414F42674E56485138424166384542414D4341595977487759445652306A42426777466F4155797832766D7859796E5045674473326F0A584E414A65575741594E7777485159445652304F424259454642696D717330786D4336415072694E4E564B6252486B49796954374D41774743437147534D34390A42414D43425141445351417752674968414D686554306442673748754A4855515A6A5A714C3249557965376641466474694958783659586F66364272416945410A38704E686665592F74346737626C5A4B49306F6C614B4C33693742302F436657633154786B57637A6F68493D0A2D2D2D2D2D454E442043455254494649434154452D2D2D2D2D0A2D2D2D2D2D424547494E2043455254494649434154452D2D2D2D2D0A4D4949435544434341664F6741774942416749424244414D42676771686B6A4F50515144416755414D4863784A7A416C42674E5642414D54486C5974533256350A4946526C63335167556D397664434244515342445A584A3061575A70593246305A5445574D4251474131554543684D4E5669314C5A586B675548526C494578300A5A44454E4D4173474131554543784D4556693150557A454C4D416B474131554542784D4355306378437A414A42674E5642416754416C4E484D517377435159440A5651514745774A54527A4165467730784E7A41304D4449774E5441334D7A68614677307A4E5441784D4445774D4441774D4442614D4838784C7A417442674E560A42414D544A6C5974533256354946526C63335167535735305A584A745A5752705958526C49454E4249454E6C636E52705A6D6C6A5958526C4D525977464159440A5651514B457731574C55746C65534251644755675448526B4D513077437759445651514C457752574C5539544D517377435159445651514845774A54527A454C0A4D416B474131554543424D4355306378437A414A42674E5642415954416C4E484D466B77457759484B6F5A497A6A3043415159494B6F5A497A6A3044415163440A5167414569386E762F7064524238517064546A79766F4742436F41496E3370556D4E3544447A6D586D6B6A623153476E4A7277345533794C2B4272684C4543330A502F76666B5A364170306A32333866415233754E566C49527A4B4E6D4D47517745675944565230544151482F42416777426745422F7749424154414F42674E560A485138424166384542414D4341595977487759445652306A42426777466F41553656306B6278417571485258433955596465644A7155554A566C4177485159440A5652304F42425945464D7364723573574D707A784941374E71467A5143586C6C674744634D41774743437147534D343942414D434251414453514177526749680A41505252626D5056685468357376502F4C492F6B6D6A4C57346C527755747778714B7A5070767A337A63393241694541726A614E5732392F61696D54567A6B4B0A47676D7675684A43494E42464F496E53355344556C3646375A45673D0A2D2D2D2D2D454E442043455254494649434154452D2D2D2D2D0A2D2D2D2D2D424547494E2043455254494649434154452D2D2D2D2D0A4D49494353444343416575674177494241674942416A414D42676771686B6A4F50515144416755414D4863784A7A416C42674E5642414D54486C5974533256350A4946526C63335167556D397664434244515342445A584A3061575A70593246305A5445574D4251474131554543684D4E5669314C5A586B675548526C494578300A5A44454E4D4173474131554543784D4556693150557A454C4D416B474131554542784D4355306378437A414A42674E5642416754416C4E484D517377435159440A5651514745774A54527A4165467730784E7A41304D4449774E5441324D6A46614677307A4E7A41784D4445774D4441774D4442614D4863784A7A416C42674E560A42414D54486C5974533256354946526C63335167556D397664434244515342445A584A3061575A70593246305A5445574D4251474131554543684D4E5669314C0A5A586B675548526C494578305A44454E4D4173474131554543784D4556693150557A454C4D416B474131554542784D4355306378437A414A42674E56424167540A416C4E484D517377435159445651514745774A54527A425A4D424D4742797147534D34394167454743437147534D34394177454841304941424D4179396845310A662B435045526457684D6F4F51534F7433716264546D4166374B762F6C706F544B657633366A34796C426D7A375A45345839394B7253613770476F6E334743620A54565A746A4543674854537A75776D6A5A6A426B4D42494741315564457745422F7751494D415942416638434151497744675944565230504151482F424151440A416747474D42384741315564497751594D426141464F6C644A4738514C716830567776564748586E53616C4643565A514D4230474131556444675157424254700A585352764543366F6446634C3152683135306D7052516C575544414D42676771686B6A4F505151444167554141306B414D455943495144426B47484169516A520A4C763361634A745A636561347A75682B62372B527A7149725275396A4C7578704A674968414E7A3155554A483433657A575579637A31333939584153473849450A6D326C30392F655379766562576B6D330A2D2D2D2D2D454E442043455254494649434154452D2D2D2D2D0A'); 
    v_id := 41; v_customer := '78'; v_type := 'PREGEN'; 
    execute immediate 'INSERT INTO PKI_CERT_DETAILS (ID, CERTIFICATE, TYPE, ALIAS, PASS, CUSTOMER_ID) VALUES (:p_id,:p_blob,:p_type,:p_alias,:p_pass,:p_customer)' using v_id, v_blob, v_type, v_alias, v_pass, v_customer; 
end; 
+0

タイプBLOBを使用する必要があります。ここではクローブを使用することはできません。 – user1734180

+0

@ user1734180大丈夫です、私はBLOBに関してもう一度編集しました。 –

+0

ありがとうBarbarosÖzhan。あなたのソリューションも同様に実行されます。もう一度お返事いただきありがとうございます – user1734180

0

は、以下のクエリのように複数のチャンクに文字を分割してみてみてください:

INSERT INTO aaaa (ID, CERTIFICATE, TYPE, ALIAS, PASS, CUSTOMER_ID) 
select 433, 
     ('2D2D2D2D2D424547494E2043455254494649434154452D2D2D2D2D0A4D4949435844434341662B67417749424167') 
     || ('4942426A414D42676771686B6A4F50515144416755414D4838784C7A417442674E5642414D544A6C5974533256') 
     || ('350A4946526C63335167535735305A584A745A5752705958526C49454E4249454E6C636E52705A6D6C6A5958526C') 
     || ('4D525977464159445651514B457731574C55746C0A65534251644755675448526B4D513077437759445651514C457') 
     || ('752574C5539544D517377435159445651514845774A54527A454C4D416B474131554543424D430A55306378437A414A') 
     || ('42674E5642415954416C4E484D423458445445334D4451774D6A41314D7A67774D566F5844544D794D4445774D5441774') 
     || ('D4441774D466F770A675949784D6A417742674E5642414D544B565974533256354946526C633351675532566C5A476C755A') 
     || ('79424A63334E316157356E49454E4249454E6C636E52700A5A6D6C6A5958526C4D525977464159445651514B457731574C5') 
     || ('5746C65534251644755675448526B4D513077437759445651514C457752574C5539544D5173770A435159445651514845774A54527A454C4D416B474131554543424D4355306378437A414A42674E564241595') 
     || ('5746C65534251644755675448526B4D513077437759445651514C457752574C5539544D5173770A435159445651514845774A54527A454C4D416B474131554543424D4355306378437A414A42674E564241595') 
     || ('5746C65534251644755675448526B4D513077437759445651514C457752574C5539544D5173770A435159445651514845774A54527A454C4D416B474131554543424D4355306378437A414A42674E564241595') 
     || ('5746C65534251644755675448526B4D513077437759445651514C457752574C5539544D5173770A435159445651514845774A54527A454C4D416B474131554543424D4355306378437A414A42674E564241595') 
     || ('5746C65534251644755675448526B4D513077437759445651514C457752574C5539544D5173770A435159445651514845774A54527A454C4D416B474131554543424D4355306378437A414A42674E564241595') 
     || ('5746C65534251644755675448526B4D513077437759445651514C457752574C5539544D5173770A435159445651514845774A54527A454C4D416B474131554543424D4355306378437A414A42674E564241595') 
     || ('5746C65534251644755675448526B4D513077437759445651514C457752574C5539544D5173770A435159445651514845774A54527A454C4D416B474131554543424D4355306378437A414A42674E564241595') 
     || ('5746C65534251644755675448526B4D513077437759445651514C457752574C5539544D5173770A435159445651514845774A54527A454C4D416B474131554543424D4355306378437A414A42674E564241595') 
     || ('5746C65534251644755675448526B4D513077437759445651514C457752574C5539544D5173770A435159445651514845774A54527A454C4D416B474131554543424D4355306378437A414A42674E564241595') 
     || ('5746C65534251644755675448526B4D513077437759445651514C457752574C5539544D5173770A435159445651514845774A54527A454C4D416B474131554543424D4355306378437A414A42674E564241595') 
     ||('2764543366F6446634C3152683135306D7052516C575544414D42676771686B6A4F505151444167554141306B414D455943495144426B47484169516A520A4C763361634A745A636561347A75682B62372B527A7149725275396A4C7578704A674968414E7A3155554A483433657A575579637A31333939584153473849450A6D326C30392F655379766562576B6D330A2D2D2D2D2D454E442043455254494649434154452D2D2D2D2D0A'), 
     'PREGEN', 
     NULL, 
     NULL, 
     '78' from dual; 
+0

既にソリューションを使用しようとしています。しかし、それはまだ実行されていません – user1734180

関連する問題