0

以下のコードに問題があります。「数値または値のエラー: 文字列バッファーが小さすぎます」というエラーが返されます。str 変数は clob 変数であるため、長い文字列を保持する必要があるようです。以前に「CLOB には文字列リテラルが長すぎます」というエラーが発生していたため、「str」Clob 変数に入力されている文字列をチャンクに分割する必要がありました。ただし、変数「str」が clob として認識されていないようで、varchar2 の長さの最大制限によって制限されています。どんな助けでも大歓迎です。str 変数の文字長は 80,000 です。

    example data real array is much longer 
    sqlLineArray = [-107.67346538 47.88608515, -107.67240372 47.88971443, -107.67122833 47.89342082, -107.67126488 47.89706066, -107.67198103 47.90075708]

    s = ', '.join(sqlLineArray)
    l = s.split()
    n = 250
    array = [' '.join(l[x:x+n]) for x in xrange(0, len(l), n)]

"declare
 in_themeid number := "+str(themeInfoObjId)+";
 in_featurename varchar2(100) := '"+replaceApostrophes(row[2])+"';
 str clob;
 p_nextRowId number;
begin
 SAVEPOINT starting_point;
 str := 'linestring (' || '"+"'  ||  '".join(array)+"'||')';
 p_nextRowId := sde.version_user_ddl.next_row_id('REFRNC', "+getTableId('FWPMAPPERLINES', 'REFRNC')+");
 INSERT INTO FWPMAPPERLINES (OBJECTID, REFRNC_ID, FEATURENAME, SHAPE) VALUES
  (p_nextRowId,in_themeid, in_featurename, sde.st_transform(sde.ST_LineFromText(str,82),2));
 commit;
END;"
4

0 に答える 0