HERE, GROUP BY和CONNECT BY。
In SQL statements, PL/SQL binds LONG values as VARCHAR2, not as LONG. However,
if the length of the bound VARCHAR2 exceeds the maximum width of a VARCHAR2
column (4000 bytes), Oracle converts the bind type to LONG automatically, then issues
an error message because you cannot pass LONG values to a SQL function
SQL语句中, PL/SQL将LONG类型作为VARCHAR2类型绑定。然而,如果所绑定的VARCHAR2长度超出了4000,ORACLE会自动转换到LONG,
然后抛出一个错误因为你不能将LONG值传递给SQL函数。
--例如: SCOTT@orcl> create table long_test(id number, msg long); 表已创建。 SCOTT@orcl> insert into long_test values(1,'hello world'); 已创建 1 行。 SCOTT@orcl> commit; 提交完成。 SCOTT@orcl> select * from long_test where msg='123'; select * from long_test where msg='123' * 第 1 行出现错误: ORA-00997: 非法使用 LONG 数据类型 SCOTT@orcl> / ID MSG ---------- -------------------------------------------------------------------------------- 1 hello world SCOTT@orcl> select id, trim(msg) from long_test where id = 1; select id, trim(msg) from long_test where id = 1 * 第 1 行出现错误: ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 LONG
3、CLOB
可以使用CLOB类型大块的字符数据。每一个CLOB变量存储一个定位器,指向一个大块字符数据。
CLOBs participate fully in transactions, are recoverable, and can be replicated. Changes
made by package DBMS_LOB can be committed or rolled back. CLOB locators can span
transactions (for reads only), but they cannot span sessions.
CLOB参与整体事务,可恢复,并且可以重复。
由DBMS_LOB包改变的数据可以提交和回滚。CLOB定位器可以跨事务,但不能跨会话。
4、BLOB
You use the BLOB datatype to store large binary objects in the database, in-line or
out-of-line. Every BLOB variable stores a locator, which points to a large binary object.
BLOBs participate fully in transactions, are recoverable, and can be replicated. Changes
made by package DBMS_LOB can be committed or rolled back. BLOB locators can span
transactions (for reads only), but they cannot span sessions.
用于存储大二进制对象,BLOB参与整体事务,可恢复,并且可以重复。
由DBMS_LOB包改变的数据可以提交和回滚。BLOB定位器可以跨事务,但不能跨会话。
drop table blob_test; SCOTT@orcl> create table blob_test( id number primary key, content blob not null); 表已创建。 SCOTT@orcl> insert into blob_test values(1,'11111000011111'); 已创建 1 行。 SCOTT@orcl> commit; 提交完成。 SCOTT@orcl> select * from blob_test; SCOTT@orcl> set linesize 2000 SCOTT@orcl> / ID CONTENT ---------- ----------------------------------- 1 11111000011111 SCOTT@orcl> insert into blob_test values(1,'11111000011111>'); insert into blob_test values(1,'11111000011111>') * 第 1 行出现错误: ORA-01465: 无效的十六进制数字 SCOTT@orcl> update blob_test set content=to_blob('110010000110011') where id=1; 已更新 1 行。 SCOTT@orcl> rollback 2 ; 回退已完成。 SCOTT@orcl> select * from blob_test; ID CONTENT ---------- --------------------------------------------------------------------- 1 11111000011111 delete from blob_test where id=1; commit;