日期:2014-05-16  浏览次数:20681 次

SQL命令使用疑问
sql文件如下:
SQL code

set serveroutput on;
exec dbms_output.put_line('test ...');

begin
     ...
end;

@C:\SQL\B.sql;
@C:\SQL\B1.sql;
@C:\SQL\B2.sql;
.....
@C:\SQL\N.sql



我在SQL中直接使用@ + 另外一个SQL文件的路径,来实现在SQL文件中调用其他SQL文件。
但现碰到一个问题:希望能将路径的公共部分抽取成一个变量。定义在文件开头,方便整体修改。

我想过两种方式,不知道能否实现。请大家不甚赐教。
1、直接在SQL中写:
variable lpath = "C:\SQL" (将C盘SQL目录定义成一个公共字符串,后面所有的SQL文件完整路径用该字符串进行拼接)
@:lpath||B.sql
@:lpath||B1.sql
....

2、在PLSQL段中,利用动态SQL:
SQL code
declare
      lpath varchar2(10);
begin
execute immediate '@'||lpath||'B.sql';
end;




------解决方案--------------------
路径可以在os的批处理文件里写成一个变量,这个没问题。
不过第二个想法就太不靠谱了,动态不是这么用的,什么都可以拿来调...
------解决方案--------------------
你可以先cd到C:\sql\下面,

再sqlplus XXX

再@..