powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Получение количества записей в REsultSet
2 сообщений из 2, страница 1 из 1
Получение количества записей в REsultSet
    #33079690
Tony_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!

Мне надо получить количество записей в РезалтСете, в доках ничего не нашел, получаю через цикл, но так и медленнее и некрасиво... есть ли какой нить метод у него для получения количества записей то?
...
Рейтинг: 0 / 0
Получение количества записей в REsultSet
    #33080478
Механизатор из Подмосковья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе придётся твой запрос вызывать дважды (с одинаковым where-критерием). Один раз -- для count(*), второй -- с теми полями, которые ты хочешь видеть в результате.
К сожалению, в динамич. SQL нельзя применять host-переменные, т.е. нельзя сделать так:
select count(*) from MyClass into :xQty
(выдаст ошибку, что типа "INTO: встретился после окончания запроса" )

Вот как можно получить результат ф-ции count(*) в динамич. запросе
(я, правда, сделал это в виде класс-метода; но это не важно сейчас):


Class DEBUG.Stub Extends %Persistent [ ClassType = persistent, ProcedureBlock ]
{
....

ClassMethod SelTest(xClassName) As %Integer
{
s xQty=-1 // если передаваемое имя класса некорректно, в вызвавший модуль вернётся кол-во строк = -1 s xSQLExpr="Select count(*) from "_xClassName
s xResult =##class(%ResultSet).%New()
d xResult.Prepare(xSQLExpr)
d xResult.Execute()
while xResult.Next(){ // Аггрегир. функция count(*) дает РОВНО одну строку.
s xQty=xResult.Data("Aggregate_1") // столбец с таким именем виден в SQL-managere и в терминале при вводе команды d $system.OBJ.Dump(xResult) }
d xResult.Close()
q xQty
}
....
}



В терминале вводим:
w ##class(DEBUG.Stub).SelTest("SomePackage.SomeClass")

В результате должно вернуться -1 (если класса "SomePackage.SomeClass" нету) или что-то больше или равное нулю (число строк в таблице "SomePackage.SomeClass").
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Получение количества записей в REsultSet
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]