1. 现在PL/SQL 脚本中有个参数,是通过 ACCEPT 指令交互式得到的,我希望能直接从命令行调用这个 SQL 文件并且把这个参数也从命令行指定它。
如何做到这点?
另外.
2. sqlplus 脚本中,能像 C 语言 system("dir") 那样调用一个操作系统的程序吗?
------解决方案--------------------------------------------------------
shell下是可以的,cmd下没有研究过,估计也行
sqlplus不能调用程序,但是能调用SQL脚本,也能用host命令切换到操作系统环境下执行程序
------解决方案--------------------------------------------------------
1. 可以将ACCEPT 替换为'@1', '@2'...:
19:52:21 C:\temp>cat test.pls
DECLARE
v_log_path VARCHAR2(50);
v_log_filename VARCHAR2(20);
BEGIN
v_log_path := '&1';
v_log_filename := '&2';
dbms_output.put_line(v_log_path
------解决方案--------------------------------------------------------
'/'
------解决方案--------------------------------------------------------
v_log_filename);
END;
/
19:52:30 C:\temp>sqlplus xxx/xx@xx
SQL*Plus: Release 11.2.0.1.0 Production on Thu Jan 17 19:52:38 2013
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> start test.pls 'c:\temp' 'test.log'
old 5: v_log_path := '&1';
new 5: v_log_path := 'c:\temp';
old 6: v_log_filename := '&2';
new 6: v_log_filename := 'test.log';
PL/SQL procedure successfully completed.
2. 可以使用$<command>来执行windows命令,比如
SQL> $hostname
machinename
如果此程序是JAVA,可以定一个存储过程调用JAVA,然后sqlplus里面调用此存储过程。
------解决方案--------------------------------------------------------
问题1:举例select * from dual where 1=&a; &a为参数,即参数前加一个&符号
问题2:可通过java编写存储过程实现调用...