Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
Вот такой пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 16:24 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
coder1cv8Что не так? В примерах фигурирует только такое использование Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 16:45 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
Что они там пишут? докаmethod %Execute(%parm...) as %SQL.StatementResult Execute the current statement. If the statement result indicates an error then return an error status. The result of the execute is always the retrun value. Success/Failure information is reported in the result object as %SQLCODE, %Message, %ROWCOUNT, and/or %ROWID. %parm... - variable number of arguments that represent the values to be bound to parameters contained in pStatementText. only parameters with input direction (input or input-output) are actually used but a position for each '?' contained in An example of calling %Execute for a prepared statement "? = call Sample.PersonSets(?,?)" is: set tStatement = ##class(%SQL.Statement).%New() set tStatus = tStatement.%Prepare("?=call Sample.PersonSets(?,?)") set tResult = tStatement.%Execute(,"A","NY") In this example, the return value is allocated a position in the %parms list (the ','), "A" is bound to the first argument passed to Sample.PersonSets and "NY" is bound to the second. This method returns a %SQL.StatementResult object. А то переводчики какую-то фигню на этот текст дают... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 16:51 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
krvsa, А в чем отличие? ) Окей, перефразируем вопрос. То что в %ROWCOUNT может быть мусор я уже вычитал поиском по форуму (хотя это жесть конечно!), но почему SQLCODE не равен 100 при отсутствии записей в таблице? Как мне узнать есть ли в record set элементы?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 16:56 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
coder1cv8, В документации хоть и написано, про %Execute "The result of the execute is always the retrun value. Success/Failure information is reported in the result object as %SQLCODE, %Message, %ROWCOUNT, and/or %ROWID", но %ROWCOUNT и %SQLCODE заполняются после итератора %Next(). Посмотрите, например, $system.OBJ.Dump(rset) до и после %Next(). "%Next() returns 1 to indicate that it is positioned on a row or 0 to indicate that it is positioned after the last row (at the end of the result set). If the cursor is positioned after the last row, the value of %ROWCOUNT indicates the number of rows contained in the result set. At any other time, %ROWCOUNT contains the number of rows retrieved thus far." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 17:16 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
newbie', офигеть! А есть ли таки способ узнать пустой или нет record set? Ну кроме if rset.%Next() - этот способ сдвинет указатель record set-a. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 17:30 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
нда... Почитал внимательнее документацию. %ROWCOUNT - это просто счетчик, заполняется при вызовах %Next() а SQLCODE равен 100 только когда Next-ом перебираем record set до конца. Cache удивляет меня все больше и больше (в негативном смысле), предыдущий вопрос остается актуальным... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 18:03 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
coder1cv8 , Каждый класс рассчитан на те возможности, которые описаны в документации по нему. В Caché есть однонаправленные и двунаправленные наборы данных. Они имеют разные возможности и решают разные задачи. Для Вашего случая подойдёт класс %ScrollableResultSet : set rs = ##class(%ScrollableResultSet).%New() do rs.Prepare("SELECT * FROM tables.sample") do rs.Execute() write "Total row count=",rs.Count(),! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 18:51 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
coder1cv8А в чем отличие? ) Как минимум в синтаксисе. Твой запрос динамический и от классов (тех что в запросе) не зависит. В другом варианте все будет сделано в момент компиляции программки. Причем четко под классы на момент компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2010, 08:38 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
Динамические запросы тоже компилятся в классы и программы (правда маленько другие), а потом они статически запускаются. Соотвественно, всякие %ROWCOUNT и SQLCODE это побочный продукт работы этих программ, при работе через классы нужно использовать интерфейсы классов. %ROWCOUNT имеет смысл при update,delete,insert. Какой смысл оно имеет при пошаговой выборке - непонятно. Тем более, оно не должно считаться до окончания выборки - и это в любом случае. До завершения выборки всех записей оно просто не может взяться ниоткуда SQLCODE не станет 100 до первой выборки, и оно означет именно, что "В этой выборке строки ничего не было получено". Также и при чтении файла EOF не установится до тех пор, пока вы не попытаетесь прочитать конец файла. Если вам нужно отслеживать пустоту запроса до входа в цикл, то либо делаейте отдельный запрос на количество записей, либо организовывайте алгоритм иначе, например так: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2010, 09:05 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.правда маленько другие Таки и я про то же... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2010, 09:44 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
Вот спасибо за %ScrollableResultSet - это то что мне нужно! ) Просто у меня легкий шок вызвало отсутствие Count-a в рекорд сет-е из примеров в документации, простите уж ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2010, 10:21 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
Если мне не изменяет склероз - то %ROWCOUNT это не количество _выбранных_ строк - это количество обработанных строк. Оно меняется только в INSERT/UPDATE запросах - в SELECT запросах она не определена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2010, 15:45 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
coder1cv8Просто у меня легкий шок вызвало отсутствие Count-a в рекорд сет-е из примеров в документации, простите уж ) Код: plaintext И все дела.... автоматическое вычисление Count это конечно удобная фича - но порой очень "дорогая" в плане выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2010, 15:47 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
Ptnавтоматическое вычисление Count это конечно удобная фича - но порой очень "дорогая" в плане выполнения. при наличии битмапа в классе - доли секунды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2010, 20:23 |
|
||
|
Почему %ROWCOUNT возвращает пустую строку?
|
|||
|---|---|---|---|
|
#18+
Rus000Ptnавтоматическое вычисление Count это конечно удобная фича - но порой очень "дорогая" в плане выполнения. при наличии битмапа в классе - доли секунды Ключевые слова "порой" и "автоматическое" - куда логичнее оставить решение о вычислении числа записей на программиста - ему должно быть виднее когда это потребуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2010, 20:55 |
|
||
|
|

start [/forum/topic.php?fid=39&fpage=45&tid=1557883]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 365ms |

| 0 / 0 |
