Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамическое создание столбцов процедурой на 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо