|
Получение количества записей в REsultSet
|
|||
---|---|---|---|
#18+
Привет всем! Мне надо получить количество записей в РезалтСете, в доках ничего не нашел, получаю через цикл, но так и медленнее и некрасиво... есть ли какой нить метод у него для получения количества записей то? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2005, 11:59 |
|
Получение количества записей в REsultSet
|
|||
---|---|---|---|
#18+
Тебе придётся твой запрос вызывать дважды (с одинаковым 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"). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2005, 16:31 |
|
|
start [/forum/topic.php?fid=39&fpage=92&tid=1559741]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
84ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 193ms |
0 / 0 |