Oracle 使用脚本导出表

Oracle 使用脚本导出表,oracle,Oracle,我接受过程中用户的表名和导出类型,并在过程中调用脚本。脚本将接受表名作为参数 ------SQL脚本----- 编辑csvfilename set heading off spool myfile.csv select * from &1; set colsep ',' spool off; -----存储过程--------- ------错误---- 任何帮助都将不胜感激。,而不是SQL-因此您不能从PL/SQL那样使用它(甚至在大多数其他客户机中)。PL/SQL也无法查

我接受过程中用户的表名和导出类型,并在过程中调用脚本。脚本将接受表名作为参数

------SQL脚本----- 编辑csvfilename

     set heading off
spool myfile.csv
select * from &1;
set colsep ','
spool off;
-----存储过程---------

------错误----


任何帮助都将不胜感激。

,而不是SQL-因此您不能从PL/SQL那样使用它(甚至在大多数其他客户机中)。PL/SQL也无法查看客户端计算机上的文件。您为什么在这里使用PL/SQL?@AlexPoole有没有其他方法可以在不使用UTL_文件的情况下导出,或者在不指定要导出的表的列的情况下使用UTL_文件?不仅仅是这样,它写入的文件将位于服务器上,而不是您的客户机上。为什么需要一个过程,为什么不直接从SQL*Plus命令行运行脚本,而不是调用
exec
?换句话说,你真正想用你的过程解决什么问题?@AlexPoole,因为这是一个项目,它特别要求在一个过程中完成。你必须使用动态SQL和
dbms\u SQL
包,-这似乎比你目前所做的有点大飞跃。但是如果不知道你被要求做什么,就不知道这是否是真正需要的。(也许你应该使用数据泵;也许表结构总是一样的;谁知道呢…)
SQL> CREATE OR REPLACE PROCEDURE Export_Table
  2  (
  3     tbl_nme IN varchar2,
  4          export_type IN varchar2
  5  )
  6  AS
  7  BEGIN
  8  IF export_type = 'csv' THEN
  9  EXECUTE IMMEDIATE '@csvfilename.sql tbl_name';
 10  END IF;
 11  END Export_Table;
 12   /

Procedure created.
 /
SQL> EXECUTE Export_Table('Mail','csv');
BEGIN Export_Table('Mail','csv'); END;

ERROR at line 1:
ORA-00900: invalid SQL statement
ORA-06512: at "TESTADMIN.EXPORT_TABLE", line 9
ORA-06512: at line 1