我想在运行SQL文件之前检查是否存在DB2连接。
解释:
@echo off
if "%DB2CLP%" == "" db2cmd /c /i /w "%0" %* & goto :eof
SET DB2CLP=**$$**
db2 -x connect to XXXXX user XXXXXXXX USING XXXXXXXX
db2 -x set current schema='XXXXXXXX'
db2 -tvsmf query1.sql
db2 -tvsmf query2.sql
db2 -tvsmf query3.sql
如果存在数据库连接,如果不再运行登录脚本,我需要一种在运行三个查询之前进行检查的方法。
这可能吗?
答案 0 :(得分:0)
您可以发出不带参数的connect
命令并检查返回码;如果发生错误,DB2 CLP将返回4.
db2 connect >nul
if errorlevel 0 goto :label1
db2 connect to XXX...
:label 1
db2 -tf query1.sql
但是,请记住,这并不能保证在所有情况下均可使用。例如,如果网络连接中断,则数据库连接将保持有效状态,直到您发出下一个SQL语句,此时将返回错误。因此,您可能希望选择运行一些保证可以工作的查询而不是connect
命令来“ping”数据库服务器:
db2 select 1 from sysibm.sysdummy1 >nul
if errorlevel 0 goto :label1
db2 connect to XXX...
:label 1
db2 -tf query1.sql