varchar2 的在SQL中最大長度為4000,並非最大限制32676


varchar2 的在SQL中最大長度為4000,並非最大限制32676

SQL> edit
已將 檔案 afiedt.buf 寫入

    declare
        v_sql varchar2(32767);
    begin
        for i in 1..4000 loop
            select v_sql || 'a' into v_sql from dual; --使用SQL
        end loop;
        dbms_output.put_line(length(v_sql));
   end;

SQL> /
4000                                                                                                                                                

PL/SQL 程序順利完成.

SQL> edit
已將 檔案 afiedt.buf 寫入

    declare
        v_sql varchar2(32767);
    begin
        for i in 1..4001 loop
            select v_sql || 'a' into v_sql from dual;  --使用SQL,有4000字的限制
        end loop;
        dbms_output.put_line(length(v_sql));
   end;

SQL> /
declare
*
 ERROR 在行 1:
ORA-01489: result of string concatenation is too long
ORA-06512: at line 5


SQL> edit
已將 檔案 afiedt.buf 寫入

    declare
        v_sql varchar2(32767);
    begin
       for i in 1..4001 loop
           v_sql :=v_sql || 'a';  --使用變數去接,可超過4000字
       end loop;
    dbms_output.put_line(length(v_sql));
    end;

SQL> /
4001                                                                                                                                                

PL/SQL 程序順利完成.