LONG columns can store text, arrays of characters, or even short documents. You can
reference LONG columns in UPDATE, INSERT, and (most) SELECT statements, but not
in expressions, SQL function calls, or certain SQL clauses such as WHERE, GROUP BY,
and CONNECT BY. For more information, see Oracle Database SQL Reference.

解决方案 »

  1.   

    In addition, LONG columns cannot appear in these parts of SQL statements:
     GROUP BY clauses, ORDER BY clauses, or CONNECT BY clauses or with the
    DISTINCT operator in SELECT statements
     The UNIQUE operator of a SELECT statement
     The column list of a CREATE CLUSTER statement
     The CLUSTER clause of a CREATE MATERIALIZED VIEW statement
     SQL built-in functions, expressions, or conditions
     SELECT lists of queries containing GROUP BY clauses
     SELECT lists of subqueries or queries combined by the UNION, INTERSECT, or
    MINUS set operators
     SELECT lists of CREATE TABLE ... AS SELECT statements
     ALTER TABLE ... MOVE statements
      SELECT lists in subqueries in INSERT statements
      

  2.   

    不可能吧,上面的说明我已经研究了很久,但我必须要吧他的内容拿出来,真的是不可能的?Long不是Text类型的吗,还是文本啊我还想在存储过程中显示记录集,比如
    create procedure p1
    as
    begin
    select * from table1;
    end;却看不到结果,必须定义游标才能靠自己把他读出来,
    我现在就是想把Table1中的那个Long字段的值读出来,如何读?定义一个Long的变量来接收?
    就算接收到了,又如何用dbms_output.put_line打印出来呢?真是头痛,这些功能在SQL SERVER中很容易完成的
    Oracle好难用!
    提点心得啊
      

  3.   

    自己去看一下Oracle的在线文档吧,直接读出来还是没有问题的。我也不大熟悉long数据类型,9i已经不推荐使用了
      

  4.   

    如果只是查询,可以用:
    select '内容:', t from table1;
      

  5.   

    jxc(GameHeart) ( )
    我要将T的值取出来,如果这样查询,拿什么变量接收他?就算接收到了,我如何将他显示出来(也就是要打印到屏幕上。因为在存储过程中只能用游标和dbms_output.input_line来显示查询结果啊。
      

  6.   

    CREATE TABLE test
     (AAA VARCHAR2(10),
      BBB VARCHAR2(20),
      CCC LONG);CREATE OR REPLACE PROCEDURE pro_test_long
    AS
      CURSOR test_cur IS SELECT * FROM test;
      test_rec test_cur%ROWTYPE;
    BEGIN
      FOR test_rec IN test_cur LOOP
        DBMS_OUTPUT.PUT_LINE('output:'||test_rec.ccc);    --ccc為LONG類型
        DBMS_OUTPUT.PUT_LINE('output:'||SUBSTR(test_rec.ccc,1,4));
      END LOOP;
    END;注:LONG類型在存储过程中、一行行显示是没有问题的。
      

  7.   

    显示是没有问题的,你可以看上面的在线文档,已经说明了哪些地方不能用。
    如果只是显示的话用sqlplus不就可以选出来吗?这个和blob字段还是不一样的
      

  8.   

    如果我的游标是用open方法打开的,也就是在程序里打开,那么我就不能在定义变量的时候定义
    test_rec test_cur%ROWTYPE的变量,所以,我希望把查询的结果用||连接在一起,然后一起显示出来,如果不这样做,我应该如何定义%ROWTYPE的变量呢?还有,在ORACLE 中SUBSTR(test_rec.ccc,1,4)中应该不正确吧,long类型的字段无法用substr函数,如果可以,那问题就解决了