![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамическое создание столбцов процедурой на FireBird [Firebird 1.5]
DelphiN! © (2008-05-08 12:37:00)Есть задача, написать процедуру, которая будет выводить данные в столбцах, при этом количество столбцов будет зависеть от передаваемых процедуре параметров. Как создавать столбцы динамически?
FireBird 1.5 Dialect 3
DelphiN! (2008-05-12 12:23:00) [1]Спасибо всем за помощь!
Виталий Панасенко (2008-05-12 11:12:00) [2]Backup под 1,5 - RESTORE под 2,х...если все нормально спроектировано, то последствий никаких
DelphiN! (2008-05-12 08:11:00) [3]
> PEAKTOP © (08.05.08 19:26) [4]
Никак. Сколько раз можно повторять: в Firebird хранимая процедура не может иметь переменное количество доменов потому, как они объявляются при создании процедуры.
То есть выхода у тебя по сути три:
1) играться с метаданными "на лету", пересоздавая каждый раз процедуру перед выполнением, за что бъют по пальцам.
2) воспользоваться Firebird 2.0 и старше. Там есть конструкция EXECUTE BLOCK, подробнее - читай в документации http://firebird.name/doku.php?id=execute_block
3) Подумать хорошенько над запросом к БД на предмет его выполнения при помощи тривиального SELECT.
Спасибо, за советы!
Заинтересовал пункт 2
А какие последствия могут быть при переходе с FireBird 1.5 на FireBird 2.0+ и какие действия для этого необходимо выполнить. Естественно, в БД есть важные данные, и необходимо не допустить их потери
Сергей М, (2008-05-09 18:14:00) [4]
> PEAKTOP © (09.05.08 05:33) [7]
Домен и столбец - две разные разницы
PEAKTOP (2008-05-09 05:33:00) [5]> Сергей М, (08.05.08 19:57) [5]
>
> Приведи, пож., ссылку на первоисточник ..
InterBase6.0 / langref.pdf / CREATE DOMAIN (искать на ibase.ru)
Неофициальный (пока не будет выполнен до конца) перевод:
http://firebird.name/doku.php?id=create_domain
Виталий Панасенко(дом) (2008-05-08 22:54:00) [6]
> Сергей М, (08.05.08 19:57) [5]
Я в книгах вообще так и читал "столбцы"... хотя при создании таблицы(исторический факт, DBD, называется FIELD).. самого в оману вводило
Сергей М, (2008-05-08 19:57:00) [7]
> PEAKTOP © (08.05.08 19:26) [4]
> в Firebird для определения атрибутов сущностей используется
> именно термин "столбцы"
Приведи, пож., ссылку на первоисточник ..
> в Firebird хранимая процедура
Автор пока нисловом не обмолвился о ХП, так что можно и еще десяток раз повторить)
PEAKTOP (2008-05-08 19:26:00) [8]> В наборах данных, как и в таблицах БД, есть поля, а не столбцы.
Смею заметить, что в Firebird для определения атрибутов сущностей используется именно термин "столбцы", т.к. в Firebird это тоже сущность, имеющая свои свойства не только как типа хранимых данных, но и условий (ограничений), которые на эти данные накладываются.
> DelphiN! © (08.05.08 12:37)
>FireBird 1.5 Dialect 3
Никак. Сколько раз можно повторять: в Firebird хранимая процедура не может иметь переменное количество доменов потому, как они объявляются при создании процедуры.
То есть выхода у тебя по сути три:
1) играться с метаданными "на лету", пересоздавая каждый раз процедуру перед выполнением, за что бъют по пальцам.
2) воспользоваться Firebird 2.0 и старше. Там есть конструкция EXECUTE BLOCK, подробнее - читай в документации http://firebird.name/doku.php?id=execute_block
3) Подумать хорошенько над запросом к БД на предмет его выполнения при помощи тривиального SELECT.
Сергей М. (2008-05-08 13:46:00) [9]
> DelphiN! © (08.05.08 12:37)
В наборах данных, как и в таблицах БД, есть поля, а не столбцы.
И ты вообще о какой процедуре ведешь речь ? О хранимой ?
DelphiN! (2008-05-08 13:23:00) [10]
> Сергей М. © (08.05.08 12:41) [1]
Я не нашел как создавать столбец при помощи EXECUTE STATEMENT
Не могли бы вы привести пример создания одного столбца?
Сергей М. (2008-05-08 12:41:00) [11]см. PSQL-предложение
EXECUTE STATEMENT