powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ROW_NUMBER() и селективная процедура UniDAC
18 сообщений из 18, страница 1 из 1
ROW_NUMBER() и селективная процедура UniDAC
    #39996473
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Firebird 3, UniDAC 8, Delphi.

Есть сложная процедура, где выборка из нескольких таблиц c union all, условия там всякие и т.д.
В общем, функцию ROW_NUMBER() внутрь процедуры не вставить. Или получится ещё сложнее.

Делаю так:
Код: pascal
1.
2.
3.
4.
sp.SQL.Text := 'SELECT ID, ST, RESULT, ROW_NUMBER() OVER (ORDER BY ID) AS ROW_NUMBER FROM SP_TELEGRAM_FIND_BY_PARAMS(:TELEGRAM_ID)';
SP.Params[0].AsLargeInt := user.ID;
sp.PrepareSQL(True);// isQuery
sp.Open;


Получаю 8 записей, как и положено, но... на строке sp.FieldByName('ROW_NUMBER').as... ошибка: поле ROW_NUMBER не найдено.

Если заменить sp.Open на SP.ExecProc, то ошибок нет, но и записей тоже нет - 0.
Этот самый запрос в IBExpert выполняется без ошибок и показывает 8 записей и поле ROW_NUMBER.
Как мне то же самое сделать в UniDac 8 с использованием TUniStoredProc?
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996475
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В будущем мне понадобится ещё и для пагинатора использовать rows
Код: sql
1.
SELECT ID, ST, RESULT, ROW_NUMBER() OVER (ORDER BY ID) AS ROW_NUMBER FROM SP_TELEGRAM_FIND_BY_PARAMS(:TELEGRAM_ID) rows 1 to 10
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996478
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
08.09.2020 11:28, X11 пишет:
>
> Как мне то же самое сделать в UniDac 8 с использованием TUniStoredProc?
>

иди в ихний саппорт.
тут делфи никто не знает. (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996481
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

зачем ты поле ключевым словом обзываешь, попробуй дать ему какой нибудь другой алиас, типа RN
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996484
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, забыл написать, что FieldsCount выдает 3, а не 4 поля.




Мимопроходящий, и туда тоже написал, но у них последнее время настолько отвратительный саппорт стал, что иной раз неделю или даже месяц ждёшь ответа
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996505
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
В общем, функцию ROW_NUMBER() внутрь процедуры не вставить.
Сложную процедуру можно вызвать из другой, попроще, а ее из клиента. А так, да, вопрос по сути к саппорту дака.
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996649
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11

Как мне то же самое сделать в UniDac 8 с использованием TUniStoredProc?


Обычный квери использовать всегда и везде, а не хрень какую-то.
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996682
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

плюсану. сколько лет надо программировать, чтобы не наступать на грабли по ключевым словам?
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996757
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да проблема не в том, что ROW_NUMBER ключевое слово.
Проблема явно в TUniStoredProc, которая чего-то там мутит с селектом перед тем, как его выполнить. Подозреваю, что городит свой собственный селект из процедуры, отрезая все "лишнее".
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996775
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, буду переделывать саму процедуру
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996796
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

гораздо проще использовать TUniQuery или как он там называется. Зачем мучить ж... ?
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996803
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис :
X11
Есть сложная процедура, где выборка из нескольких таблиц c union all, условия там всякие и т.д.
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996806
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

так тебе никто не предлагает отказаться от самой ХП. Тебе предлагают вот этот запрос

Код: sql
1.
2.
SELECT ID, ST, RESULT, ROW_NUMBER() OVER (ORDER BY ID) AS RN
FROM SP_TELEGRAM_FIND_BY_PARAMS(:TELEGRAM_ID)



выполнять через TUniQuery вместо TUniStoredProc
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996808
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

компоненты типа хххStoredProc обычно заточены на вызов процедур через execute procedure nnn. И по крайней мере в IBX это даже не датасет. Поэтому набор записей оттуда получить нельзя. Так что, если вы пишете select from myproc, нужно использовать любой компонент для select.
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996811
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
выполнять через TUniQuery вместо TUniStoredProc


ааа, понял, спасибо
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996849
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
09.09.2020 10:05, kdv пишет:
> компоненты типа хххStoredProc обычно заточены на вызов процедур через execute procedure nnn. И по крайней мере в IBX это даже не датасет .

ошибаешься


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996902
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

ну он типа от IBCustomDataSet, но в результате чё-то не датасет.
...
Рейтинг: 0 / 0
ROW_NUMBER() и селективная процедура UniDAC
    #39996905
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
09.09.2020 13:20, kdv пишет:
>
> ну он типа от IBCustomDataSet, но в результате чё-то не датасет.
>

датасет.
не все методы пра-предка переопределены, но по дедушке таки датасет.
это у них семейное. (С)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ROW_NUMBER() и селективная процедура UniDAC
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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