DELPHI连接ORACLE数据库,向表里写入数据的时候,会提示错误“ORA_01536:超出表空间‘USERS’的空间限量“,请问是怎么回事?
问题是发生在数据库方面还是程序方面?程序执行时,可以插入一个或两个,但是到了后面就出这样的错误。
如何改正这个错误?
源码如下:
ADOQuery3.SQL.Text :='select * from wssp_attachment where ItemObjectID=''' + ADOQuery1.fieldByName('ItemObjectID').AsString + '''';
ADOQuery3.Open ;
if not ADOQuery3.Eof then
begin
ADOQuery2.SQL.Text :='select * from wssp_attachment where ItemObjectID=''' + ADOQuery1.fieldByName('ItemObjectID').AsString + '''' ;
ADOQuery2.Open ;
if ADOQuery2.Eof then
begin
TranSql:='insert into TranLog(TransDatetime, WorkDescribe) values(GetDate(),'''+'开始传送' + ADOQuery1.fieldByName('ItemObjectID').asstring + '的附件'+ ''')' ;
SQLConn.Execute(TranSql);
for j:=1 to ADOQuery3.RecordCount do
begin
TranSql:='insert into TranLog(TransDatetime, WorkDescribe) values(GetDate(),'''+ADOQuery3.fieldByName('AttachmentID').asstring + '传送开始'+ ''')' ;
SQLConn.Execute(TranSql); ADOQuery2.Append ;
ADOQuery2.FieldByName('ItemObjectID').AsString :=ADOQuery3.fieldByName('ItemObjectID').AsString ;
ADOQuery2.FieldByName('AttachmentID').AsString :=ADOQuery3.fieldByName('AttachmentID').AsString ;
ADOQuery2.FieldByName('AttachmentTitle').AsString:= ADOQuery3.fieldByName('AttachmentTitle').AsString ;
ADOQuery2.FieldByName('AttachmenType').AsString := ADOQuery3.fieldByName('AttachmentType').AsString ;
stream.clear;
TBlobField(ADOQuery3.FieldByName('Attachment')).SaveToStream(stream);
TBlobField(ADOQuery2.FieldByName('Attachment')).LoadFromStream(Stream);
showmessage(ADOQuery3.fieldByName('ItemObjectID').AsString +' '+ ADOQuery3.fieldByName('AttachmentID').AsString+' '+ADOQuery3.fieldByName('AttachmentTitle').AsString+' '+ADOQuery3.fieldByName('AttachmentType').AsString);
ADOQuery2.Post ; TranSql:='insert into TranLog(TransDatetime, WorkDescribe) values(GetDate(),'''+ADOQuery3.fieldByName('AttachmentID').asstring + '传送完毕'+ ''')' ;
SQLConn.Execute(TranSql);
ADOQuery3.Next ;
if ADOQuery3.Eof then break;
end; end;
问题是发生在数据库方面还是程序方面?程序执行时,可以插入一个或两个,但是到了后面就出这样的错误。
如何改正这个错误?
源码如下:
ADOQuery3.SQL.Text :='select * from wssp_attachment where ItemObjectID=''' + ADOQuery1.fieldByName('ItemObjectID').AsString + '''';
ADOQuery3.Open ;
if not ADOQuery3.Eof then
begin
ADOQuery2.SQL.Text :='select * from wssp_attachment where ItemObjectID=''' + ADOQuery1.fieldByName('ItemObjectID').AsString + '''' ;
ADOQuery2.Open ;
if ADOQuery2.Eof then
begin
TranSql:='insert into TranLog(TransDatetime, WorkDescribe) values(GetDate(),'''+'开始传送' + ADOQuery1.fieldByName('ItemObjectID').asstring + '的附件'+ ''')' ;
SQLConn.Execute(TranSql);
for j:=1 to ADOQuery3.RecordCount do
begin
TranSql:='insert into TranLog(TransDatetime, WorkDescribe) values(GetDate(),'''+ADOQuery3.fieldByName('AttachmentID').asstring + '传送开始'+ ''')' ;
SQLConn.Execute(TranSql); ADOQuery2.Append ;
ADOQuery2.FieldByName('ItemObjectID').AsString :=ADOQuery3.fieldByName('ItemObjectID').AsString ;
ADOQuery2.FieldByName('AttachmentID').AsString :=ADOQuery3.fieldByName('AttachmentID').AsString ;
ADOQuery2.FieldByName('AttachmentTitle').AsString:= ADOQuery3.fieldByName('AttachmentTitle').AsString ;
ADOQuery2.FieldByName('AttachmenType').AsString := ADOQuery3.fieldByName('AttachmentType').AsString ;
stream.clear;
TBlobField(ADOQuery3.FieldByName('Attachment')).SaveToStream(stream);
TBlobField(ADOQuery2.FieldByName('Attachment')).LoadFromStream(Stream);
showmessage(ADOQuery3.fieldByName('ItemObjectID').AsString +' '+ ADOQuery3.fieldByName('AttachmentID').AsString+' '+ADOQuery3.fieldByName('AttachmentTitle').AsString+' '+ADOQuery3.fieldByName('AttachmentType').AsString);
ADOQuery2.Post ; TranSql:='insert into TranLog(TransDatetime, WorkDescribe) values(GetDate(),'''+ADOQuery3.fieldByName('AttachmentID').asstring + '传送完毕'+ ''')' ;
SQLConn.Execute(TranSql);
ADOQuery3.Next ;
if ADOQuery3.Eof then break;
end; end;
解决方案 »
- 点击按扭向edit中添加文本时,如何让其在当前光标位置添加?
- 用 delphi写的发送邮件的程序为何是乱码
- 为何输入法会自动写入
- 急,求救!!!关于access数据库的备份与恢复问题???
- 为什么ADOQuery1在OPEN以后如果窗口CLOSE程序就出错呢
- 大家对用触发器修改视图有什么好经验,想深入学学这个,后台MS SQL2000
- socket客户端接收数据问题
- 请各位大吓,帮我看看压缩ACCESS数据库的代码有什么错误?
- 看看这段代码,有什么问题呀??
- MDIChild在MDI Client 区的移动
- TQuery可以查询了多个数据集结果,怎样使用其他数据集呢?
- 打印StringGrid内容的时候怎么根据StringGrid列的宽动态设制打印的列的宽.
在一个月以前使用过这段程序,发现是正常的。但是这次就发生了这样的错误。
我问过管理数据库的人,说数据库没有重新做。不可能有限制表空间。
难道ORACLE中可以调整数据表的大小吗?我觉的不可能啊。
如:多次用到「ADOQuery1.fieldByName('ItemObjectID').AsString」
可把它付给一个变量
var Query1_Id: String;
Query1_Id := ADOQuery1.fieldByName('ItemObjectID').AsString;
然后关闭ADOQuery1,节省占用内存。2.不要对「SELECT SQL」语句直接用「Append」如:ADOQuery2.Append;
可対表作「Append」或用「Insert」SQL语句。
alter tablespace users add datafile 'c:\oracle\oradata\users.dbf' size 200m autoextend on next 10m maxsize 500m;