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

解决方案 »

  1.   

    方法一:
    建議先建立一個DBLINK,然後再寫存儲過程直接調用...1)把你要做的工作写成脚本,甚至你可以在程序中动态生成你的脚本,假定保存为c:\a.sql 
    2)在Delphi中用ShellExecute执行该脚本,参数为sqlplus   internal/oracle@server   @c:\a.sql
      

  2.   

    這樣試試...copy   from   username/password@dbname 
    to   username1/pw1@dbname1 
    append(create/insert/replace)   tablename(col1,col2...) 
    using   select....from   ...; 
    append:添加到表上,如果tablename表不存在,则建立此表 
    create:如果tablename表存在,则出错 
    insert:添加到表中,如果tablename表不存在,则出错 
    replace:替换表中数据,如果tablename表不存在,则建立此表...
      

  3.   

    如果說:
    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文件里面),改完后,重新启动数据库...