我正在尝试使用 sqlplus 和 Oracle 假脱机功能导出一些数据。问题是我定义导出的 SQL 输入文件不允许我参数化我从中导出数据的表名——它需要一个文字:(
在 shell 脚本中调用 sqlplus:
sqlplus $USER/$PASSWD@$ORADB<<!
@export.sql $OUT_FILE $SOME_VAR $ENV
exit
!
导出.sql:
set heading off
set head off
set term off
set tab off
set embedded on
set feedback off
set pagesize 0
set linesize 800
set trimspool on
set verify off
spool &1
SELECT '&2|' || some_col
FROM &3_TABLE
/
spool off
当 $ENV 设置为'dev'时,我得到
Enter value for 3_TABLE
而我希望它使用 dev_TABLE。当我取消参数化 sql 文件中的表名时,输出运行良好。另请注意,有参数 &2,它是来自 shell 的 $SOME_VAR,它显示得很好。唯一的问题是在 FROM 语句中。
有没有办法告诉sql输入文件在运行SQL之前替换参数化的表名?
谢谢