Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在Oracle 12c中使用CLOB时,字符串连接的结果太长_String_Oracle_Long Integer_Clob - Fatal编程技术网

String 在Oracle 12c中使用CLOB时,字符串连接的结果太长

String 在Oracle 12c中使用CLOB时,字符串连接的结果太长,string,oracle,long-integer,clob,String,Oracle,Long Integer,Clob,当使用CLOB字段时,我得到一个“字符串连接的结果太长”错误。结果字段为 varSQLConcat CLOB 连接语句是 varSQLConcat := CONCAT(TO_CLOB(varSel_CREATION), TO_CLOB(varWhere_New)); varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(' AND SY_INPUT_UID_NEW.SUBMISSION_TYPE = ')); varSQLConcat := CON

当使用CLOB字段时,我得到一个“字符串连接的结果太长”错误。结果字段为

varSQLConcat CLOB

连接语句是

varSQLConcat := CONCAT(TO_CLOB(varSel_CREATION), TO_CLOB(varWhere_New));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(' AND SY_INPUT_UID_NEW.SUBMISSION_TYPE = '));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB('''CREATION'''));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(' UNION '));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(varSel_SUBMISSION));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(varWhere_New));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(' AND (SY_INPUT_UID_NEW.SUBMISSION_TYPE = '));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB('''SUBMISSION'''));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB('OR SY_INPUT_UID_NEW.SUBMISSION_TYPE = '));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB('''NEW_W_REG_PARENT'')'));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(' UNION '));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(varSel_ROLLOVER));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(varWhere_Rollover));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(' UNION '));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(varSel_EMBED));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(varWhere_Embed));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(' UNION '));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(varSel_LIFECYCLE));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(varWhere_Lifecycle));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(' UNION '));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(varSel_MARK));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(varWhere_Mark));
   varSQLConcat := CONCAT(varSQLConcat, TO_CLOB(varOrder_By));
错误发生在以下语句中:

OPEN cRecord FOR varSQLConcat; 

这是Oracle 12c下的解决方案。

我没有真正的解决方案,但这可能是一个解决方案:

DECALRE

    cmd DBMS_SQL.VARCHAR2A;
    cur PLS_INTEGER := DBMS_SQL.OPEN_CURSOR;
    res INTEGER;
    cRecord := SYS_REFCURSOR;

BEGIN
    cmd(1) := varSel_CREATION; -- each line is limited by 32767 characters!
    cmd(cmd.LAST+1) := varWhere_New;
    cmd(cmd.LAST+1) := 'AND SY_INPUT_UID_NEW.SUBMISSION_TYPE = ';
    cmd(cmd.LAST+1) := '''CREATION'''; 
    ...


    DBMS_SQL.PARSE(cur, cmd, cmd.FIRST, cmd.LAST, TRUE, DBMS_SQL.NATIVE); 
    res := DBMS_SQL.EXECUTE(cur);   
    cRecord := DBMS_SQL.TO_REFCURSOR(cur);

END;
请出示证件