String 在Oracle 12c中使用CLOB时,字符串连接的结果太长
当使用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
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;
请出示证件