我创建了下面的sql脚本,我试图使用zone和market ans参数化它将此脚本保存为wrapper.sql
define zone1= &1.
define market1= &2.
set lines etc
SET ECHO OFF
SET FEEDBACK OFF
SET HEAD OFF
SET LIN 256
SET WRAP OFF
SET PAGES 0
spool H:\extract_&zone1&market1..csv
select 'zone' ||','||
'market' ||','||
'id'
result from dual
union all
select zone ||','||
market ||','||
id
from solution_report
where rownum <5 and zone = &zone1 and market = &market1;
/
spool off
现在因为我有23个区域,我创建了23个包装脚本并将其保存在文件wrapper_script.sql
中。我想为每个区域生成23个excel文件。
@C:\Users\raw\Desktop\wrapper.sql As Asia
.
.
.
@C:\Users\raw\Desktop\wrapper.sql AF Africa
但是当我尝试运行这个wrapper_script.sql时,它会生成23个csv文件,但文件中没有数据。我正在使用oracle sql developer客户端来运行此脚本,因为我无法访问sql plus。
我不确定我是否在错误的地方使用假脱机,或者我在调用错误时调用错误,因为我在包装器中传递字符串值?
还有其他任何方法,以便它可以优化工作,而不是创建23个包装文件。
以下是我的选择查询结果,我相信我必须格式化区域和市场列的字符串。
zone,market,boutique_id
EUR,Belgium,1233
EUR,Portugal,1345
EUR,Portugal,1567
答案 0 :(得分:1)
您需要在脚本中使用&1.
和&2.
来引用第一个和第二个命令行参数。您可以立即将它们分配给命名变量,如下所示:
define zone1 = &1.
define market1 = &2.
最后的.
是可选的,但我更喜欢在某些情况下始终使用它来避免含糊不清。