You can use this SQL directly:
SELECT COUNT(1) FROM Your.Table
Or if you want to pass class name as an argument, you can wrap it in SQL procedure:
Class Utils.Dictionary
{
/// Call from SQL: SELECT Utils.Dictionary_GetExtentSize('Utils.Persistent') As ExtentSize
/// write ##class(Utils.Dictionary).GetExtentSize("Utils.Persistent")
ClassMethod GetExtentSize(class) As %Integer [ SqlProc ]
{
/// Convert class name to table name.
/// You can skip this step if you have table name already
#define ClassSQLTable(%c) ($$$comClassKeyGet(%c,$$$cCLASSsqlschemaname)_"."_$$$comClassKeyGet(%c,$$$cCLASSsqltablename))
set table = $$$ClassSQLTable(class)
/// Quoter2 is called to escape table name if required
set table = ##class(%CSP.UI.Portal.SQL.Home).Quoter2(table)
/// Execute dynamic SQL
/// Really %sqlcq.<NAMESPACE>.cls<NUMBER>
#dim rs As %SQL.ISelectResult
set rs = ##class(%SQL.Statement).%ExecDirect(,"SELECT COUNT(1) AS extentSize FROM " _ table)
/// Get first result
do rs.%Next()
set extentSize = rs.extentSize
quit extentSize
}
}
And call like this:
SELECT Utils.Dictionary_GetExtentSize('Utils.Persistent') As ExtentSize- Log in to post comments