这是一个简化的请求:
declare
long_var long;
begin
select long_column into long_var from my_table where id = 1;
end;
适用于大多数情况但是当long_column值太大时(我发现至少有一个条目 - 它的值大约为5兆字节)会导致
ORA-06502: PL/SQL: numeric or value error
答案 0 :(得分:1)
来自Oracle PL / SQL文档
您无法从LONG或LONG RAW列中检索长度超过32,760字节的值为LONG或LONG RAW变量。
https://docs.oracle.com/cd/E11882_01/appdev.112/e25519/datatypes.htm#CJAEGDEB
您可以使用CLOB,但必须将列从LONG更改为CLOB
ALTER TABLE my_table MODIFY ( long_column CLOB );
然后你使用:
declare
clob_var clob;
begin
select long_column into clob_var from my_table where id = 1;
end;
如果您无法更改表格,请将其复制:
1)使用CLOB创建表
create table my_table_2 (clob_column clob, id number);
2)复制
insert into my_table_2
select to_lob(long_column), id from my_table;
3)访问新表
declare
clob_var clob;
begin
select clob_column into clob_var from my_table_2 where id = 1;
end;