在运行下一个SQL脚本之前检查DB2连接

在运行下一个SQL脚本之前检查DB2连接,sql,batch-file,db2,Sql,Batch File,Db2,在运行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.s

在运行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
在运行这三个查询之前,我需要一种方法来检查是否存在数据库连接,以及是否再次运行登录脚本

这可能吗?

您可以发出不带参数的connect命令并检查返回代码;如果发生错误,DB2CLP将返回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

大家好,欢迎来到Stack Overflow。别忘了女人也有密码。您可以突出显示代码并单击{}按钮进行标记。你为什么要这么做?这感觉就像你在治疗一种症状,而不是根本原因。如果你的连接断开了,修复它不是更好吗?