将批处理文件中的用户定义参数输入传递给SQL文件

时间:2017-01-09 05:46:30

标签: oracle batch-file parameters

我想知道如何实现我有一个文件A.sqlA.sql具有带WHERE子句的insert命令和带有WHERE子句的update命令。

SQL文件:

INSERT INTO Table1 SELECT columns FROM table2 WHERE col1 BETWEEN 'Value1' AND 'Value2'

UPDATE table1 SET (coluname) = (SELECT colname FROM table2 WHERE some_col = 'Value3')
WHERE EXISTS(SELECT 1 FROM table2 WHERE some_col ='Value3')

用户在运行批处理文件时定义Value1Value2Value3

批处理文件:

SET PRO=A.sql
sqlplus %Cond%@%HOMEDIR%sql/%PRO% >>%HOMEDIR%log/%log_file%

1 个答案:

答案 0 :(得分:1)

您可以使用*.sql将传递的值用于&1 &2 ... &n - 文件。

现在取决于用户如何设置参数:

在“运行时”期间使用set /p param1=进行用户输入:

sqlplus %Cond%@%HOMEDIR%sql/%PRO% %param1% %param2% <etc> >>%HOMEDIR%log/%log_file%

如果作为参数使用"%~1" "%~2" <etc>。其中%1代表第一个参数,~删除潜在的引号。

您也可以修改这些参数并将其保存到变量中供以后使用:

set /a p1=%~1-1
set /a p2=%~2-1
sqlplus %Cond%@%HOMEDIR%sql/%PRO% %p1% %p2% <etc> >>%HOMEDIR%log/%log_file% 

/a表示进行了算术运算以减去1。 对于评论中要求的B.sql。