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

时间:2014-06-26 14:01:00

标签: 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.sql
db2 -tvsmf query3.sql

如果存在数据库连接,如果不再运行登录脚本,我需要一种在运行三个查询之前进行检查的方法。

这可能吗?

1 个答案:

答案 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