|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
Доброго дня коллеги! Подскажите, можно ли (и как, желательно с примером на Delphi) внутри UDF функции для Firebird 2.5 выполнить запрос (например, посчитать количество записей в таблице для заданного идентификатора) и вернуть результат? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 14:35 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 14:37 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
Вопрос не в том, как написать SQL для подсчета записей, а как во внешней функции В ПРИНЦИПЕ выполнять запросы к БД и возвращать результат… ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 14:41 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
11.04.2018 14:41, zya пишет: > как во внешней функции В ПРИНЦИПЕ выполнять запросы к БД и возвращать результат… а за на хуа? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 14:46 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
zya, не ищи себе геморрой на ровном месте. В UDF это сделать нельзя без дополнительного внутреннего коннекта и старта транзакции. В UDR можно, но это уже в 3.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 14:56 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
zya, Сделать-то можно.... НО у тебя есть PSQL + execute statement - зачем городить огород? Или ты думаешь, что SQL запрос из UDF будет выполнен быстрее, чем тот же SQL из PSQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 14:57 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
zya, подключиться из UDF к серверу на адрес 127.0.0.1 и выполнить запрос в другой транзакции. Иными словами, если в незавершенной транзакции, вызвавшей функцию UDF будут какие-либо изменения записей, то функция UDF этого не увидит, выполнив запрос к серверу по другому соединению и в другой транзакции этого не увидит. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 14:58 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
zyaВопрос не в том, как написать SQL для подсчета записей, а как во внешней функции В ПРИНЦИПЕ выполнять запросы к БД и возвращать результат…Такая "внешняя функция" давно написана - см. EXECUTE STATEMENT ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 14:59 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
Вот этого я и опасался, что надо поднимать сессию, транзакцию что не есть гут... А какая может быть альтернатива для решения следующей задачи. Есть структура предприятия в виде дерева, например (id, id_root, sign). Необходимо для каждой строчки получить признак принадлежности подразделения к заданному идентификатору родителя. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 15:11 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
zya, так и что мешает? Незнание FirebirdSQL Reference Manual ? Читай мантру про CTE. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 15:15 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
zyaА какая может быть альтернатива для решения следующей задачиа) включить мозг б) выучить SQL в) написать запрос Без (а) не советую даже начинать ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 15:38 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
zya, зачем это делать в UDF? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 15:38 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
zyaВот этого я и опасался, что надо поднимать сессию, транзакцию что не есть гут... нет волшебного способа на другом сервере выполнить запрос без коннекта, старта транзакции, и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 15:56 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
kdvzyaВот этого я и опасался, что надо поднимать сессию, транзакцию что не есть гут... нет волшебного способа на другом сервере выполнить запрос без коннекта, старта транзакции, и т.д. Есть! Телепатический! И местные обитатели тому подтверждение ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 15:59 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
DarkMasterzya, Сделать-то можно.... НО у тебя есть PSQL + execute statement - зачем городить огород? Или ты думаешь, что SQL запрос из UDF будет выполнен быстрее, чем тот же SQL из PSQL? Получилось нечто вроде Код: sql 1. 2. 3. 4. 5. 6.
но вот эта часть Код: sql 1.
смориться как то не аккуратно... А можно эту конструкцию заменить на более "изящную"? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 16:02 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
zyaПолучилось нечто вроде Код: sql 1. 2. 3. 4. 5. 6.
но вот эта часть Код: sql 1.
смориться как то не аккуратно... А можно эту конструкцию заменить на более "изящную"?Это что еще за бред? Иди и читай про объединение кортежей записей (INNER JOIN/LEFT JOIN/RIGHT JOIN и т.д.)!!! Приходи, когда освоишь JOIN'ы и освоишь 3NF . ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 16:07 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
zya, использование звёздочки в подзапросе это просто цирк какой-то, ты что не знаешь как у тебя там возвращаемое поле называется? предположим это N, тогда Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 16:12 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
Да блин, при чем тут join. Задача предельно простая - выполнить функцию - если результат функции = параметру - вернуть результат. В оракле я бы сделал это так. В PL/SQL написал бы функцию TEST и вызвал бы ее: Код: sql 1. 2. 3. 4. 5. 6.
в Firebird 2.5 нет такой возможности. Используя PSQL + execute statement можно сделать подобное только таким образом: Код: sql 1. 2. 3. 4. 5. 6.
Отсюда и вопрос как вызвать процедуру не используя select * from test(t.id), а как в Оракле ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 16:15 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
Симонов Денисzya, использование звёздочки в подзапросе это просто цирк какой-то, ты что не знаешь как у тебя там возвращаемое поле называется? предположим это N, тогда Код: sql 1. 2. 3. 4. 5. 6.
Понял. спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 16:17 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
Симонов Денисzya, использование звёздочки в подзапросе это просто цирк Сейчас стадия отладки запроса. В продуктиве такого нет. Это просто пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 16:19 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
zya, в Firebird 3.0 ты можешь написать PSQL функцию, а в 2.5 только ХП. Но, если ты обращаешься не к другой БД, то я подозреваю, что твою задачу и вовсе можно решить простым SQL запросом без всяких ХП ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 16:20 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
zya, что делает ХП test? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 16:33 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
Симонов Денисzya, в Firebird 3.0 ты можешь написать PSQL функцию, а в 2.5 только ХП. Но, если ты обращаешься не к другой БД, то я подозреваю, что твою задачу и вовсе можно решить простым SQL запросом без всяких ХП Может быть, может быть... Пока будет такое решение... Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 16:35 |
|
UDF функция с SQL запросом
|
|||
---|---|---|---|
#18+
rdb_devzya, что делает ХП test? В общем случае внутри функции будет выполняться запрос по идентификатору, а в частности будет показывать входит ли деталь с указанным идентификатором в заданную спецификацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2018, 16:39 |
|
|
start [/forum/topic.php?fid=40&fpage=35&tid=1561163]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 305ms |
total: | 459ms |
0 / 0 |