是呀,我也想知道比如select * from all_views 里的 TEXT 字段类型就是LONG 每次都只是读取固定长度十几个字符出来,,其实里面有很多的东西 ,、怎么办呀??
解决方案 »
- 关于ORA-01779: cannot modify a column which maps to a non key-preserved table
- 请教如何把DBF数据或者EXECEL数据导入ORACLE9i数据库中?
- ORACLE 如何读取大字段的?
- 急求一个sql语句
- windows XP下安装了Oracle可是plus里出现TNS-12560错误,请教高手解决!急急急!
- 问一个oracle10i的sql查询
- select出错。。大家帮着看看啊
- 对rowid的操作为什么会这么慢?
- 关于oracle字符集的问题,在线等待。。。。。。。。。
- ORACLE734-INTERNAL密码的问题
- 在SQL中得到从1970年1月1日0时到指定时间的秒数
- vb中怎么读出long型字段(用ado方法),急,今天就要交了
1、先建立一个存储过程,作用是读取long信息,
因为我的过程一次性返回long的信息,我这里定义了30000个字符
所以最多只能返回30000个字符
如果我没读取一行返回信息,就能全部返回long的信息
不过我这里一次性返回30000字符已经可以满足你的要求
create or replace procedure readlong
(viewname in varchar2,viewtext in out varchar2)
as
eachrow varchar2(30000);
begin
for row_str in (select text from user_views where view_name=upper(viewname) and rownum =1) loop
eachrow := eachrow||trim(row_str.text);
end loop;
viewtext := eachrow;
eachrow := '';
end;
/2、我不会VB,只好用delphi测试,反正都一样的,在你的VB/DELPHI调用这个存储过程即可
with adostoredproc1 do
begin
close;
parameters.parambyname('viewname').value:='你的VIEW名';
parameters.parambyname('viewtext').value:='';
execproc;
end;
edit1.text:=adostoredproc1.parameters.parambyname('viewtext').value;另外:
如果你要在SQLPLUS里面显示long的信息
可以这样写存储过程,下面的过程可以完全显示long的信息,因为是读一行显示一行的
上面的程序由于考虑了VB/DELPHI的调用,所以最多显示long的30000个字符
你也可以改改上面的程序,全部显示long的内容,但是会影响效率
create or replace procedure readlong
as
eachrow varchar2(4000);
begin
for row_str in (select text from user_views where view_name='你的VIEW名' and rownum =1) loop
eachrow := trim(row_str.text);
dbms_output.put_line(eachrow);
end loop;
end;
/
create or replace procedure readlong
as
eachrow varchar2(4000);
begin
for row_str in (select name from aa where rownum =1) loop
eachrow := trim(row_str.name);
end loop;
dbms_output.put_line(eachrow);
end;
/