在DELPHI程序里,从SQL SERVER2000取出数据,然后通过一个循环写到ORALCE的表里,循环大约405条记录时,提示错误:
ORA-12571:TNS:包写入程序失败我用FOXPRO将一个20000多行的表通过循环写到ORACLE,能将所有记录写入ORACLE,表明ORACLE数据库和网络是正常的。为什么通过DELPHI写入ORACLE时提示错误?请问如何为什么?如何解决?我的程序代码如下:procedure Tform_liqun.Button4Click(Sender: TObject);
var
bm:TBookMark;
begin
inherited;
to_ora.Connection:=datamodule2.to_oracle_database;
with to_ora do
begin
sql.Clear;
sql.Add('delete from table1');
try
execsql;
except
button4.Enabled:=false;
showmessage('删除ORA(table1)时出现错误');
exit;
end;
end;
with to_sql_server do
begin
First;
bm:=GetBook;
end;
while not to_sql_server.Eof do begin
with to_ora do
begin
sql.Clear;
sql.Add('INSERT INTO table1 VALUES (:a1,:a2,:a3,:a4,:a5,:a6,:a7');
parameters.ParamByName('a1').Value:=dbgrid1.DataSource.DataSet.FieldByName('订单流水号').AsString;
parameters.ParamByName('a2').Value:=dbgrid1.DataSource.DataSet.FieldByName('申请日期').AsString;
parameters.ParamByName('a3').Value:=dbgrid1.DataSource.DataSet.FieldByName('完工时间').AsString;
parameters.ParamByName('a4').Value:=dbgrid1.DataSource.DataSet.FieldByName('业务号码').AsString;
parameters.ParamByName('a5').Value:=dbgrid1.DataSource.DataSet.FieldByName('商品规格').AsString;
parameters.ParamByName('a6').Value:=dbgrid1.DataSource.DataSet.FieldByName('商品规格1').AsString;
parameters.ParamByName('a7').Value:=dbgrid1.DataSource.DataSet.FieldByName('受理班组').AsString;
try
execsql;
except
button4.Enabled:=false;
ShowMessage('插入ORA(table1)时出现错误).');
Exit;
end;
end;
to_sql_server.Next;
end;
with to_sql_server do
begin
GotoBook(bm);
FreeBook(bm);
first;
end;
button4.Enabled:=false;
showmessage('sql server2000上的数据已导入ORA(table1)');
end;
ORA-12571:TNS:包写入程序失败我用FOXPRO将一个20000多行的表通过循环写到ORACLE,能将所有记录写入ORACLE,表明ORACLE数据库和网络是正常的。为什么通过DELPHI写入ORACLE时提示错误?请问如何为什么?如何解决?我的程序代码如下:procedure Tform_liqun.Button4Click(Sender: TObject);
var
bm:TBookMark;
begin
inherited;
to_ora.Connection:=datamodule2.to_oracle_database;
with to_ora do
begin
sql.Clear;
sql.Add('delete from table1');
try
execsql;
except
button4.Enabled:=false;
showmessage('删除ORA(table1)时出现错误');
exit;
end;
end;
with to_sql_server do
begin
First;
bm:=GetBook;
end;
while not to_sql_server.Eof do begin
with to_ora do
begin
sql.Clear;
sql.Add('INSERT INTO table1 VALUES (:a1,:a2,:a3,:a4,:a5,:a6,:a7');
parameters.ParamByName('a1').Value:=dbgrid1.DataSource.DataSet.FieldByName('订单流水号').AsString;
parameters.ParamByName('a2').Value:=dbgrid1.DataSource.DataSet.FieldByName('申请日期').AsString;
parameters.ParamByName('a3').Value:=dbgrid1.DataSource.DataSet.FieldByName('完工时间').AsString;
parameters.ParamByName('a4').Value:=dbgrid1.DataSource.DataSet.FieldByName('业务号码').AsString;
parameters.ParamByName('a5').Value:=dbgrid1.DataSource.DataSet.FieldByName('商品规格').AsString;
parameters.ParamByName('a6').Value:=dbgrid1.DataSource.DataSet.FieldByName('商品规格1').AsString;
parameters.ParamByName('a7').Value:=dbgrid1.DataSource.DataSet.FieldByName('受理班组').AsString;
try
execsql;
except
button4.Enabled:=false;
ShowMessage('插入ORA(table1)时出现错误).');
Exit;
end;
end;
to_sql_server.Next;
end;
with to_sql_server do
begin
GotoBook(bm);
FreeBook(bm);
first;
end;
button4.Enabled:=false;
showmessage('sql server2000上的数据已导入ORA(table1)');
end;
难道不应该是:
sql.Add('INSERT INTO table1 VALUES (:a1,:a2,:a3,:a4,:a5,:a6,:a7)');
这条语句,是因为提交到论坛时楼了一个右括号,实际程序里没有错。
TNSPING下你的服务名...看解析是否正确..