|
Самогенерация SQL запроса
|
|||
---|---|---|---|
#18+
Привет всем. Возможно ли как-то создать процедуру в IB6, которая сгенерирует SQL запрос из таблиц как стринговую переменную и запустит ее на выполнение? Если возможно простой пример, как это сделать. Заранее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2002, 17:28 |
|
Самогенерация SQL запроса
|
|||
---|---|---|---|
#18+
Запрос сгенерировать то можно, проанализировав словарь, но выполнить его невозможно (по крайней мере простыми средствами) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2002, 13:08 |
|
Самогенерация SQL запроса
|
|||
---|---|---|---|
#18+
А если непростыми? Любые извращения только приветствуются. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2002, 19:33 |
|
Самогенерация SQL запроса
|
|||
---|---|---|---|
#18+
Непонятно, что вобще в результате ты хочишь получить и как это можно использовать? Если хочешь в процедуру имя таблицы передавать, то непонятно, что она должна возврашать и куда. Если набор эквивалентных полей - то это можно IFами сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2002, 20:25 |
|
Самогенерация SQL запроса
|
|||
---|---|---|---|
#18+
Нужна функция, которая и строки, которая сгенирится в процессе работы процедуры запускать данный Sql запрос. Короче, в результате будет что-то типа AI. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2002, 22:59 |
|
Самогенерация SQL запроса
|
|||
---|---|---|---|
#18+
Запрос данные возвращать куда-то должен. Это тебе не обычный язык программироввания. Процедуры и триггеры все компилируемые и динамической памяти тут нет. Все процедуры могут возвращать только заранее определённые параметры и выполнять те запросы, которые в них откомпилированы. Т.е. даже если ты такую процедуру сделаешь, ты её использовать сможешь только на клиенте. Я тебе написал, что простыми способами сделать этого нельзя т.к. не знаю как. Но теоретически можно сделать всё. Если извращения приветствуются - то вот тебе очень большое извращение: все процедуры в спец. двоичном формате также в словаре храняться, т.е. я думаю, что если разобраться со структурой BLR, то можно самому тело процедуры менять например в какой-то UDF и потом обратно записывать. Но тут проблемы с многопольз. доступом опять вылезут. Вобщем, забудь о такой процедуре - бессмысленная это идея. Вызывать динамически сформированные запросы внутри процедуры НЕЛЬЗЯ в принципе. Такие задачи нужно решать с клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 12:30 |
|
Самогенерация SQL запроса
|
|||
---|---|---|---|
#18+
По моему с помощью Prepare можно в SQL запросе компилировать SQL запрос. Вообще-то мне еще бы не помешала возможность запускать SQL запросы асинхронно внутри SQL запроса(тоесть многопоточность), но это ни один SQL сервер скорее всего не поддерживает:(( А данные будут братся из таблиц и возвращатся в таблицы. Я задал данный вопрос на других форумах, мне ответили, что например ORACLE и MSSql могут запускать запросы, сгенеренные из кусков строки. На IB тоже свет клином(даже есть такой язык:)) ) не сошелся. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2002, 15:15 |
|
Самогенерация SQL запроса
|
|||
---|---|---|---|
#18+
На самом деле Oracle поддерживает такие вещи, типа генерация на ходу того что хочу выполнить, и если честно в IB такого сильно не хватает, но в любом случае UDF, хоть и не удобно, но решает проблемы. У меня тоже маленькая проблема. Есть база из под 5 версии, в которой есть функция с параметром "Action". Эту функцию IB 6 напрочь не компилит, "Action" 'Action' не помогает, в принципе ерунда, но есть прога которая теперь не работает, исходников естественно нет. Мое мнение, что Oracle всем хорош, кроме цены, официально не поставишь, а так поимеют. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2002, 23:47 |
|
Самогенерация SQL запроса
|
|||
---|---|---|---|
#18+
Читал на сайте Firebird, что в версии 1.5 будет команда EXECUTE VARCHAR. Насколько я понимаю, это и есть вызов динамически сформированного запроса. Так что будем ждать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2002, 13:42 |
|
Самогенерация SQL запроса
|
|||
---|---|---|---|
#18+
Привет! Нельзя так делать. Через UDF - только открывая второй, параллельный коннект. Это чревато... EXECUTE VARCHAR не будет иметь возможночти возвращать данных - только INSERT или UPDATE. Что касается самой постановки задачи (ИИ) - это все в сад, в сад :) Базы данных имеют немножко другую ориентацию и извращений не очень приемлют :-) WBR, Alexey ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2002, 17:57 |
|
|
start [/forum/topic.php?fid=40&gotonew=1&tid=1581154]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 151ms |
0 / 0 |