|
|
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
Всем привет! Пытаюсь перейти с SQL Server на FireBird. Никак не могу разобраться, как работают DSP, потратил уйму времени, чтобы найти хоть что-то по моей теме, но так ничего и не нашел, хотя наверное этот вопрос уже возникал 1000 раз. Вот например простейшая ХП: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Как мне сделать так, чтобы работала примерно такая ДХП? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Заранее спасибо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 14:05 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
noram, Попутал 2 понятия. Саму SP и формирование запроса динамически внутри твоей ХП. Для второго варианта будет так: Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 14:33 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
DarkMaster, Т.е. твой пример будет выглядеть так: Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 14:35 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
noramНикак не могу разобраться, как работают DSP Тебе (для начала) будет лучше считать, что они вообще никак не работают. Какую задачу ты пытаешься решить этим говнокодом? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 14:39 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
DarkMaster, Большое спасибо! То, что доктор прописал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 14:44 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, //Тебе (для начала) будет лучше считать, что они вообще никак не работают.// Это еще почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 14:46 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
noramЭто еще почему? Неразумное использование ES приводит к а) Тормозам б) SQL injection в) говнокоду Поэтому если ты решил взять на себя обычный для чайников религиозный обет "использовать в коде приложения только запросы EXECUTE PROCEDURE и никогда даже не прикасаться к SELECT/INSERT/UPDATE/DELETE", то лучше откажись от этой религии сразу, пока геморрой не вырос на всю голову. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 14:55 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovПоэтому если ты решил взять на себя обычный для чайников религиозный обет "использовать в коде приложения только запросы EXECUTE PROCEDURE и никогда даже не прикасаться к SELECT/INSERT/UPDATE/DELETE", то лучше откажись от этой религии сразу, пока геморрой не вырос на всю голову. Я только знакомлюсь с FireBird и никаких религиозных обетов брать не собираюсь. Но мне многое непонятно, главное - почему так мало документации по FireBird, как на английском, так и на русском. Из того, что я читал про свободные бд (например FB или PostgreSQL), многие приводят как большой минус FB осутсвие внятной документации. Рад был прочесть на этом форуме, что добрые люди начали проект по документации FB. Если дадите мне ссылку, где можно будет почитать про динамические ХП, а также правила хорошей практики, буду благодарен. И вообще, раз уж разговор об этом, насколько оправдано применение ХП в FB и можно ли обходится без них. Мой front end - Delphi XE5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 15:41 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
Я имел в виду, конечно, динамичсеких ХП.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 15:44 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
noramНо мне многое непонятно, главное - почему так мало документации по FireBird, как на английском, так и на русском. Сколько это по-твоему "мало"? Сколько из этого "мало" ты уже прочитал? Language Reference ты уже прочитал? А Language Reference Update for version 2.5? Материалы с http://www.ibase.ru/develop.htm ты прочитал все? Или хотя бы из раздела "для чайников"... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 15:53 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
noramЯ только знакомлюсь с FireBird Тогда зачем ты сразу полез в Dynamic SQL (который есть экзотика и не рекомендуется к использованию в любой СУБД) и в хранимые процедуры вообще? Тебе действительно для какой-то задачи не хватило обычного SQL?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 15:58 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
noram, никаких динамических ХП в Firebird нет. Есть выполнение динамических запросов в рамках PSQL (оператор EXECUTE STATEMENT). Ещё есть анонимные PSQL блоки (EXECUTE BLOCK). Практически всё есть reference-manuals и release-notes Разжёванное есть на Документация и статьи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 16:00 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТогда зачем ты сразу полез в Dynamic SQL (который есть экзотика и не рекомендуется к использованию в любой СУБД) и в хранимые процедуры вообще? Тебе действительно для какой-то задачи не хватило обычного SQL?.. Хотел бы, чтобы хватало... Как например решить такую задачу? Код: plsql 1. Я заранее не знаю, сколько будет этих Val., может 3, а может пять... Как выкрутиться в этой ситуации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 16:10 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
Симонов Денисникаких динамических ХП в Firebird нет. Есть выполнение динамических запросов в рамках PSQL (оператор EXECUTE STATEMENT) Наверное потому я и не смог ничего найти. Почитал про EXECUTE STATEMENT, информации много - да, применять эту эксекьюшку советуют только в крайнем случае. Я ничего не утверждаю, я только спрашиваю совета. Значит, если я правильно понял, лучше написать 1000 ХП на все случаи жизни, чем несколько динамических? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 16:22 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
noramКак выкрутиться в этой ситуации? Сложить все значения во временную таблицу ("хоть миллион, хоть миллиард" (с)), а потом join с ней. ХП и динамический SQL тут не нужны. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 16:25 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
noram, 1. Заталкивать Val1, Val2, ... ValN в GTT и делать с ней JOIN по полю фильтрации 2. Создать ХП SPLIT, которая бы принимала на вход строку состоящую из значений склеенных разделителем, а на выходе были бы разделённые значения и делать JOIN с этой ХП. На форуме этот вопрос обсасывался 100500 раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 16:27 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
Спасибо, буду разбираться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2014, 16:38 |
|
||
|
Dynamic Stored Procedures
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТогда зачем ты сразу полез в Dynamic SQL (который есть экзотика и не рекомендуется к использованию в любой СУБД) и в хранимые процедуры вообще? Эх, дать тебе волю - ХП отмерли б на корню, не говоря об execute statement ;) Ну ищет человек аналог sp_executesql (так кажись в MS это зовется). Он-то задачу не озвучил - пусть себе ищет, может оно ему действительно надо. P.S. У меня на текущий момент обратная задача - перевод функционала системы на FB на рельсы MSSQL. Тот еще цирк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2014, 04:13 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38716800&tid=1563409]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 385ms |

| 0 / 0 |
