我定义了一个long型变量v_SqlStr用来存放动态SQL语句(想用CASE WHEN 语句实现交叉表),当该动态SQL变量v_SqlStr达到32768个字符时就出错,不是说long型变量可存储2GB个字节吗? 请问我该如何解决这种超长字符的变量存储及返回问题?

解决方案 »

  1.   

    when a LONG RAW (MAX 2GB bytes) is read into a RAW PL/SQL variable (MAX 32767 bytes).
      

  2.   

    clob类型做为变量最大只能32K,但做为字段可以到2G。
      

  3.   

    LONG is a variable length PL/SQL datatype and database column type that is used to store character data. In PL/SQL the LONG is like a VARCHAR2 datatype except that is can store 32780 bytes (VARCHAR2 is limited to 2000 bytes). The LONG database column has a width of 2GB.
    32767 bytes for PL/SQL variables
    2GB bytes for database columns
    Sample Declarations
    A PL/SQL declaration - maximum width
    DECLARE
       book_paragraph LONG; -- up to 32767 bytes
    BEGIN
       ...A table declaration with a LONG column that stores 2GB
    CREATE TABLE ...
       (book LONG,
        ...
      

  4.   

    很多人对此有个误解,其实在pl/sql中long型变量的大小和用long型字段来存储东西的大小是不同的概念,long型变量最大只能32K,而long型字段最大可存储2G