我想知道如何实现我有一个文件A.sql
。 A.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')
用户在运行批处理文件时定义Value1
,Value2
,Value3
。
批处理文件:
SET PRO=A.sql
sqlplus %Cond%@%HOMEDIR%sql/%PRO% >>%HOMEDIR%log/%log_file%
答案 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。