SQL*PLUS中的copy是一功能非常强大的数据复制命令.它虽然可以在sql>提示符下使用,但不属于SQL语句,因此,Delphi中的的ADOQUERY组件不能直接使用.要想使用这个copy命令,在Delphi中应该怎样完成.copy的命令格式:
COPY {FROM database | TO database | FROM database TO database} {APPEND|CREATE|INSERT|REPLACE} destination_table [(column, column, column, ...)]
USING query
COPY {FROM database | TO database | FROM database TO database} {APPEND|CREATE|INSERT|REPLACE} destination_table [(column, column, column, ...)]
USING query
建議先建立一個DBLINK,然後再寫存儲過程直接調用...1)把你要做的工作写成脚本,甚至你可以在程序中动态生成你的脚本,假定保存为c:\a.sql
2)在Delphi中用ShellExecute执行该脚本,参数为sqlplus internal/oracle@server @c:\a.sql
to username1/pw1@dbname1
append(create/insert/replace) tablename(col1,col2...)
using select....from ...;
append:添加到表上,如果tablename表不存在,则建立此表
create:如果tablename表存在,则出错
insert:添加到表中,如果tablename表不存在,则出错
replace:替换表中数据,如果tablename表不存在,则建立此表...
set Copycommit 1
Set arraySize 100
Copy from username/password@dbname-
to username1/pw1@dbname1-
append Tablename-
Using Select * from Tablename1 在sql/plus里前几次执行时报错: ORA-01458: 内部变量字符串长度非法。 那麼可能的原因就是:
ORA-01458 invalid length inside variable character string Cause An attempt was made to bind or define a variable character string with a buffer length less than the two-byte minimum requirement.
Action Increase the buffer size or use a different type.
解決方法:增加初始化参数db_block_buffers(在init.ora文件里面),改完后,重新启动数据库...