检查SQL查询是否返回任何输出

时间:2018-06-27 12:33:34

标签: vbscript

我有以下SQL语句(从我的VBS脚本运行):

  

exec DBABee。[警告]。[usp_TShell]'SpaceProblems_tempdb_only'

返回以下输出: enter image description here

我的问题是, 我如何修改我的vbs脚本,以在上述SQL语句返回任何结果(在这种情况下为任何行)时进行标记? 以及如何将结果输入变量?

这是我的脚本:

Dim objCN, strConnection
Dim objAPI, oBag , srtReturn
Set objCN = CreateObject("ADODB.Connection")
Set objAPI = CreateObject("MOM.ScriptAPI")
Set oBag = objAPI.CreatePropertyBag()
strConnection = "Driver={SQL Server};Server=sqlsrv01,1433;Database=tempdb;Trusted_Connection=TRUE"
objCN.Open strConnection
Dim strSQLQuery
strSQLQuery = "exec DBABee.[Alerting].[usp_TShell] 'SpaceProblems_tempdb_only'"
Dim objRS
Set objRS=CreateObject("ADODB.Recordset")
Set objRS = objCN.Execute(strSQLQuery)
Do Until objRS.EOF

                if objRS.Fields("IsProblem") <> "0" then

                    Call oBag.AddValue("Status","Good")
                    Call oBag.AddValue("Result", objRS.Fields("IsProblem"))

                else
                    Call oBag.AddValue("Status","Bad")


                end if
                objRS.MoveNext
Loop
objRS.Close
Call objAPI.Return(oBag)

我不熟悉VBScripting的这一领域, 因此,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用RecordCount属性来确定查询是否返回了任何内容。您可以使用

if (objRS.RecordCount > 0) Then
     ' There is data! 
else
     ' Nothing was returned
end if

关于从RecordSet中获取值(在您的情况下为objRS),请使用以下方法:

Dim ExampleVar
Do Until ObjRS.EOF
    ExampleVar = objRS.Fields("ColumnName").Value
    objRS.MoveNext
Loop

假设您的oBag的AddValue函数正确无误,似乎您正在正确检索RecordSet值