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