Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 20 21 22 23 24 25 26 27 28 [29]
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9246
Arioch,

гляну вечером, если не забуду и время будет. Про ALTER TABLE в тот день времени не было, а потом забыл, каюсь.
14 авг 18, 16:44    [21642154]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Arioch
Member

Откуда:
Сообщений: 10630
Симонов Денис,

да, кстати, желательно явно описать, два "граничных случая" - я вот на SO напоролся на один из них.

1) что происходит с переменной, после недавшегося FETCH (после окончания курсора). Насколько понимаю, она просто не меняется. Но можно предполагать установку в NULL (помнишь споры вокруг "x := (select...)" и "select ... into x" ?). Желатально явно описать.
2) что произойдет на втором и последующих вызовах "после конца курсора". На первом имеем ROW_COUNT=0, и я думал, что на втором и последующем будет то же. А вот Марк говорит, на втором вызове уже будет ошибка.

В принципе та ссылка на Stack Overflow - там довольно интересный пример, в котором явно есть задача (странная, да) где именованный курсор лучше подходит, чем FOR SELECT

IMHO этот пример бы в документацию скопировать - он и "тонкие места" обходит и имеет какой-то реальный смысл. Текущие примеры укладываются в "идиотский громоздким способ написать FOR SELECT в 10 строк"
14 авг 18, 17:16    [21642204]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9246
Arioch

Для проверки того, что записи набора данных исчерпаны, используется контекстная переменная ROW_COUNT, которая возвращает количество считанных оператором строк. Если произошло чтение очередной записи из набора данных, то ROW_COUNT равняется единице, иначе нулю.


Звучит разумно и просто, надёжность через примитивность, надеюсь это проверено?
Потому что англо-документация тут просто пестня...
https://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-psql-coding.html#fblangref25-psql-fetch

For checking whether all of the the data set rows have been fetched, the context variable ROW_COUNT returns the number of rows fetched by the statement. It is positive until all rows have been checked. A ROW_COUNT of 1 indicates that the next fetch will be the last.



в английской версии чепуха написана. Эта переменная довольно хитрая
https://www.firebirdsql.org/refdocs/langrefupd21-row_count.html
14 авг 18, 20:59    [21642389]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Arioch
Member

Откуда:
Сообщений: 10630
Симонов Денис,

> Added in: 1.5

ух ты...

а как же в Interbase контролировали рещультат Fetch без этой переменной, интересно?...

Что-то в доках недоговаривается...
15 авг 18, 11:30    [21642729]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9246
Arioch,

а ему незачем было. Явные курсоры появились только в 2.0. В остальных случаях всегда можно найти workaround
15 авг 18, 11:50    [21642769]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59631
Симонов Денис> в английской версии чепуха написана.

Это при переводе напортачили?

P.S. Про "1 если предпоследняя"
не припомню (ИМХО, чепуха),
но в циклах её обычно на ноль
проверяют, так что неактуально.

Posted via ActualForum NNTP Server 1.5

15 авг 18, 14:31    [21643146]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9246
Гаджимурадов Рустам,

именно эта. Про 1 относительно верно только только для FOR SELECT циклов, но никак не про FETCH
Вот же более подробно рассказано об это переменной https://www.firebirdsql.org/refdocs/langrefupd21-row_count.html

ИХМО кроме проверки на ноль от неё большого смысла нет. По крайней мере на остальные результаты я бы не стал рассчитывать.
15 авг 18, 14:53    [21643209]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Arioch
Member

Откуда:
Сообщений: 10630
ну тогда про Fetch надо подробнее написать про узкие места и пример в SO подцепить
15 авг 18, 15:34    [21643295]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Arioch
Member

Откуда:
Сообщений: 10630
kdv
Arioch
Забавно, что нет той самой титульной страницы, которую меня призывали смотреть.

21633246 я тоже удивлен, это вопрос к Денису, что-то, видать, не так генерится.


Arioch
21635792 тогда можно наконец править текст ,пока не забыли

Arioch
IMHO второй заголовок "ALTER TABLE" надо удалить ,он там никакой пользы кроме вреда не приносит


Arioch
ну тогда про Fetch надо подробнее написать про узкие места и пример в SO подцепить


альзо

iBase docs
В СУБД Firebird для работы с данными, содержащими дату и время, используются типы данных DATE, TIME, TIMESTAMP.
......
В типах DATETIME и TIME Firebird хранит секунды....



альзо про DateAdd - надо добавить про обрезку дат ( особые случаи, corner cases нужно явно проговаривать вслух )

например
SELECT DateAdd ( -1 MONTH TO DATE '31-MAR-1980' ) From MON$DATABASE
30 авг 18, 13:58    [21658853]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Arioch
Member

Откуда:
Сообщений: 10630
и кстати, про "Хранимые функции" в 2.5 (точнее в 2.1, на 2.5 пока не проверял)

SELECT
output_column AS expr_col,
col2,
FROM T
LEFT JOIN PSQL_PROC(T.col1) ON 1=1


а вот неявный join не работает, пытается NULL в процедуру сунуть вместо параметров, даже если параметры SP прописанны как NOT NULL

это вообще откуда-то вытекает из стандарта такое, что обязательно надо еще NULL попробовать?
а если N параметров, то неявный или INNER JOIN будут 2^N сочетание NULL/не-NULL пытаться перебрать?

или просто такой баг в движке ?

в любом случае, мне кажется надо в документацию добавить комментарий, почему именно LEFT JOIN, почему другие джойны не сработают
30 авг 18, 14:08    [21658878]     Ответить | Цитировать Сообщить модератору
 Re: ANN Руководство по языку SQL СУБД Firebird 2.5  [new]
Arioch
Member

Откуда:
Сообщений: 10630
Чтобы помнили, даже если не правили...

О мониторинговых таблицах - 21706423
17 окт 18, 13:06    [21706444]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 20 21 22 23 24 25 26 27 28 [29]
Все форумы / Firebird, InterBase Ответить