Создание таблицы из представления — различия между версиями
Материал из wiki.standart-n.ru
Aleksnick (обсуждение | вклад) (Новая страница: « ==Пример== <pre> select * from updpr_view2table('vw_warebaseparts','warebaseparts'); </pre> ==Установка== <pre> SET TERM ^ ; create or alter pr…») |
Aleksnick (обсуждение | вклад) |
||
| (не показана одна промежуточная версия этого же участника) | |||
| Строка 1: | Строка 1: | ||
| + | ==Описание== | ||
| + | Процедура помогает сделать из представления таблицу с той же самой структурой. | ||
==Пример== | ==Пример== | ||
<pre> | <pre> | ||
| − | select * from | + | select * from pr_view2table('vw_warebaseparts','warebaseparts'); |
</pre> | </pre> | ||
| − | |||
==Установка== | ==Установка== | ||
| Строка 10: | Строка 11: | ||
SET TERM ^ ; | SET TERM ^ ; | ||
| − | create or alter procedure | + | create or alter procedure PR_VIEW2TABLE ( |
VIEW_NAME DM_TEXT not null, | VIEW_NAME DM_TEXT not null, | ||
TABLE_NAME DM_TEXT not null) | TABLE_NAME DM_TEXT not null) | ||
| Строка 41: | Строка 42: | ||
/* Existing privileges on this procedure */ | /* Existing privileges on this procedure */ | ||
| − | GRANT EXECUTE ON PROCEDURE | + | GRANT EXECUTE ON PROCEDURE PR_VIEW2TABLE TO SYSDBA; |
</pre> | </pre> | ||
Текущая версия на 16:25, 7 марта 2016
Описание
Процедура помогает сделать из представления таблицу с той же самой структурой.
Пример
select * from pr_view2table('vw_warebaseparts','warebaseparts');
Установка
SET TERM ^ ;
create or alter procedure PR_VIEW2TABLE (
VIEW_NAME DM_TEXT not null,
TABLE_NAME DM_TEXT not null)
returns (
TEXT DM_TEXT_BIG)
as
declare variable FIELD_NAME DM_TEXT;
declare variable FIELD_SOURCE DM_TEXT;
declare variable VARS DM_TEXT_BIG;
begin
select 'CREATE TABLE ' || :table_name || ' (' from rdb$database into :text;
select list(rf.rdb$field_name || ' ' || rf.rdb$field_source, ',')
from (
select * from rdb$relation_fields rrf
where 1=1
and rrf.rdb$relation_name=upper(:view_name)
order by rrf.rdb$field_position asc
) rf
into :vars;
text = text || vars || ');';
suspend;
end^
SET TERM ; ^
/* Existing privileges on this procedure */
GRANT EXECUTE ON PROCEDURE PR_VIEW2TABLE TO SYSDBA;