我需要了解如何在Oracle11g数据库中查找给定表是否为空表,以便在PowerAdmin服务器监视器的“运行脚本”特性中使用VBA进行具体操作。
SELECT COUNT(*) FROM table;
正确地将"COUNT(*)“返回为0。结果img我需要找到一种方法来检查结果是否为0。
这是脚本同事用于访问数据库的一个经过编辑的版本,用于稍微不同的目的,我更希望我们可以继续这样做。
Dim strConnect
Dim strSQL
Dim adoConnection
Dim adoRecordset
strConnect = "Driver={Oracle in OraClient11g_home1_32bit};" & _
"Dbq=database;" & _
"Uid=user;" & _
"Pwd=password"
strSQL = "SELECT COUNT(*) FROM table;;"
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Open strConnect
Set adoRecordset = CreateObject("ADODB.Recordset")
adoRecordset.ActiveConnection = adoConnection
adoRecordset.Source = strSQL
adoRecordset.Open
[check if query result is the number 0 here]
adoRecordset.Close
adoConnection.Close
我需要像这样的东西
If queryresult = 0 then
SendNotification = True
Details = "table is empty"
End If
任何帮助都将不胜感激。ELI5越多越好。
发布于 2022-11-16 11:16:37
在ADO中执行查询之后,记录集指向第一个记录,并且可以访问每个索引(基于0)的第一个记录的字段。
count(*)-query的结果始终是一行,只有一列,保存记录的数量。因此,您可以使用adoRecordset(0)
(=第一个记录的第一个字段)访问行数。
您可以创建一个函数来获取记录的数量:
Const strConnect = "..."
Function CountValues(tableName As String) As Long
Dim strSQL As String
strSQL = "SELECT COUNT(*) FROM " & tableName
Dim adoConnection
Dim adoRecordset
On Error GoTo CountValues_ERROR
Set adoConnection = CreateObject("ADODB.Connection")
Set adoRecordset = CreateObject("ADODB.Recordset")
adoConnection.Open strConnect
adoRecordset.ActiveConnection = adoConnection
adoRecordset.Source = strSQL
adoRecordset.Open
Dim res
res = adoRecordset(0)
CountValues = CLng(res)
GoTo CountValues_EXIT
CountValues_ERROR:
MsgBox "An error occurred fetching data: " & Err.Number & " " & Err.Description
CountValues_EXIT:
If adoRecordset.State <> 0 Then adoRecordset.Close
If adoConnection.State <> 0 Then adoConnection.Close
End Function
注:如果我在你的地方,我会改用早期装订。添加对ADODB库的引用并使用
Dim adoConnection As ADODB.Connection
Dim adoRecordset As ADODB.RecordSet
Set adoConnection = new ADODB.Connection
Set adoRecordset = new ADODB.RecordSet
https://stackoverflow.com/questions/74459015
复制相似问题