使用SQLPLUS中的数据库值作为批处理文件的参数

时间:2013-05-30 01:01:19

标签: oracle dos sqlplus bind-variables

我需要运行批处理文件并传入数据库值。根据日期,需要将不同的值传递到DOS命令。此特定业务规则在数据库的视图中定义。

我们的主要计划工具是在SQLPLUS中运行脚本的数据存档,因此这是我首选的计划活动方法。我也可以直接运行一个批处理文件,直接调用SQLPLUS并获取一个值,但是设置它会有更多的麻烦,所以我不想这样做。

我是一个SQLPLUS爱好者。

我传入SQLPLUS的SQL脚本如下。我遇到的问题是传入:sTriggerName,而不是它的值。

set echo on
set feedback on
set termout on


VAR sTriggerName VARCHAR2(100)

SELECT TRIGGERNAME INTO :sTriggerName 
FROM SCHEMA.VIEW 
WHERE CALENDAR_DATE = TRUNC(SYSDATE) AND ROWNUM < 2;
/

HOST "E:\CallScheduleTrigger.CMD :sTriggerName."

quit

1 个答案:

答案 0 :(得分:2)

在上面的示例中,我使用的是绑定变量。

此链接显示我要从数据库加载替换变量并改为使用它:

http://www.oracle.com/technetwork/testcontent/sub-var9-086145.html

将数据库值加载到名为sTriggerName

的替换变量中
COLUMN TRIGGERNAME new_value sTriggerName
SELECT TRIGGERNAME FROM SCHEMA.VIEW WHERE CALENDAR_DATE = TRUNC(SYSDATE) AND ROWNUM < 2;

在主机命令中使用此替换变量(即作为批处理文件的参数):

HOST "E:\CallScheduleTrigger.CMD &sTriggerName"