我需要如何查找 Oracle 資料庫 (Oracle 11g) 中的給定表是否為空,以便在 PowerAdmin Server Monitor 的“運行腳本”功能中使用 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越多越好。
uj5u.com熱心網友回復:
在 ADO 中執行查詢后,記錄集指向第一條記錄,您可以訪問每個索引(從 0 開始)的第一條記錄的欄位。
count(*) 查詢的結果始終是一行一列,包含記錄數。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://www.uj5u.com/houduan/535466.html
標籤:VBA