2011-05-26 138 views
1

我有一个更新某个表的SQL文件。但是,表名取决于安装软件的计算机名称。 (如:TableFooBar-MyMachine)。我必须编写一个调用Oracle SQL脚本的批处理文件来更新此表。将参数从批处理文件传递给Oracle SQL文件

所以,BatchFile - >更新。 Sql - > TableFooBar-MyMachine

更新。 Sql将具有如下语句:

Update TableFooBar-<Machine-Name> where fooid = -99; 

此批处理文件需要在许多机器上运行。实际上在这些表上有很多更新语句。我不希望人们编辑sql文件。相反,如果我在批处理文件中设置计算机名称并将其传递给sql,那么我已经完成了很多工作! 如何将机器名称参数传递给.sql文件以实现此目的?

回答

6

你可以使用置换变量

update.sql

-- 
Update TableFooBar-&1 set column_foo='bar' where fooid = -99; 
-- 

,然后调用

sqlplus foo/[email protected] @update.sql <Machine-Name> 
+0

+1,正想说相同。但是,您在sqlplus调用中省略了参数:sqlplus foo/bar @ db @ update.sql <机器名称> – DCookie 2011-05-26 15:01:42

+0

@DCookie:<机器名称> - 是调用参数:) – schurik 2011-05-26 15:06:15

+0

Oopps,没有看到它一些原因。格式帮助:-) – DCookie 2011-05-26 15:19:15

2

是的,您可以通过从BATCH文件创建SQL文件来执行此操作。

它应该是这样的:

@echo off 
set SQL = update.sql 
ECHO connect username/[email protected] 
ECHO Prompt Updating tables > %SQL% 
ECHO Update TableFooBar-%1 where fooid = -99; >> %SQL% 

sqlplus @update.sql 
相关问题