现在有段脚本,我有 QRPT1012X.SQL 文件,我知道它想先跑脚本,再出报表。前面的 $SQLPLUS, $RUNREP 都是直接写在 SQL 中的 SQLPLUS 调用操作系统的命令的方法,
但我有个问题这个 QRTP1012X.SQL 为什么需要前缀 run$sql,
同样为什么 $PRINT 那行 需要把 RUN$PRN:QRPT1012X.PRN 前面.
$RUNREP 那行前面也 run$rep.看上去,似乎 RUN$PRN 后面的文件一定是 PRN 扩展名, run$sql 后面的文件一定是 sql 扩展名,这个是 SQLPlus 的特别处理还是操作系统的特别处理,我不熟悉 Linux 或其它的 xNux 里面有什么把这个 run$sql 做特殊处理的。我也不知道这段脚本是运行在什么类型的 Unix 或 Linux 上面的。你们说说默认的操作系统有这个对参数嵌入式的处理吗?我只听说过 `echo xx` 这样的写法。
如果操作系统本身没这功能,那是不是这个 SQLPLUS 这个 shell 脚本对每个加了这个的前缀的参数都执行了某种替换操作?
$SQLPLUS MAN/[email protected] @run$sql:QRPT1012X.SQL
$RUNREP run$rep:QRPT1012X.REP SYSTEM/[email protected] BATCH=YES
$PRINT RUN$PRN:QRPT1012X.PRN/QUE=LTA4
$EXIT另外一个样例,是个 SQL文件的内容。
$SQLLOAD userid=test/[email protected] control=RUN$CTL:load_qtr.ctlsqlplus linux

解决方案 »

  1.   

    run$sql:QRPT1012X.SQL--这些可能都是文件名
      

  2.   

    因为这些脚本里面并没有提供 SQL 和 REP目录,因此现在我猜想,
    可能那个操作系统上已经有一些批处理程序名字就叫 $SQLPLUS , $RUNREP, $PRINT, 它会把后面参数中的 run$sql 和 run$rep 替换成 SQL 和 REP 文件所在的目录,这个目录是在一个类似 ini 文件里面配置的。如果 $SQLPLUS 是一个合法的 Unix/Linux 文件名,那可能这种猜想就合理。