0

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

我们的主要调度工具是在 SQLPLUS 中运行脚本的 datastage,所以这是我安排活动的首选方法。我也可以直接运行一个批处理文件来调用 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
4

1 回答 1

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"
于 2013-05-30T02:14:05.540 回答