Хранимая процедура FireBird
Хранимая процедура FireBird
Помогите с написание хранимой процедуры....
Никогда не писал их..
Ее смысл:
удаляет все таблицы в БД с именем которое начинается на TT (то есть TT%)
TT - передается как параметр.
Думаю кто с этим имел дело, тому не составит большого труда...
Заранее благодарен...
Никогда не писал их..
Ее смысл:
удаляет все таблицы в БД с именем которое начинается на TT (то есть TT%)
TT - передается как параметр.
Думаю кто с этим имел дело, тому не составит большого труда...
Заранее благодарен...
Re: Хранимая процедура FireBird
Из процедуры нельзя менять метаданные, в общем случае.
Процедура - это работа с данными.
Метаданные меняет клиент, ну или "среднее звено".
А в правильно спроектированных системах - никто и никогда не меняет метаданные.
Процедура - это работа с данными.
Метаданные меняет клиент, ну или "среднее звено".
А в правильно спроектированных системах - никто и никогда не меняет метаданные.
Re: Хранимая процедура FireBird
Ну а как по другому мне реализовать это удаление?WildSery писал(а):Из процедуры нельзя менять метаданные, в общем случае.
Процедура - это работа с данными.
Метаданные меняет клиент, ну или "среднее звено".
А в правильно спроектированных системах - никто и никогда не меняет метаданные.
Re: Хранимая процедура FireBird
никак. вернее как обычно. выполнением sql из приложения, причем, поскольку это ddl, корректно обрамленного транзакциями.Ну а как по другому мне реализовать это удаление?
Re: Хранимая процедура FireBird
kdv,
Нехорошо обманывать.
Посоветовать использовать 'execute statement' - религия не позволяет ?
Нехорошо обманывать.
Посоветовать использовать 'execute statement' - религия не позволяет ?
Re: Хранимая процедура FireBird
execute statement не предназначен для выполнения DDL. Может Вы не знаете, но возможность выполнять в нем DDL была корректная только для grant. Весь остальной ddl в ES выполнять крайне не рекомендуется, потому что манипуляции с метаданными должны происходить в коротких транзакциях, что при ES соблюсти не удастся (с автономными транзакциями в 2.5? может быть...), и проблема не только в этом.Нехорошо обманывать.
Посоветовать использовать 'execute statement' - религия не позволяет ?
То есть, я таких советов не даю. И мне проще ответить "нет", чем дать человеку (тем более новичку) в руки гранату, на которой он тут же подорвется, причем гарантированно.
А Вы, подозреваю, из любителей советовать то, что сами не пробовали? Или дайте ему готовый код.
Re: Хранимая процедура FireBird
kdv, Вы зря кипятитесь.
Если Вы не хотите давать новичку гранату - не значит , что ее нет.
Пусть лучше "подорвется" в начале пару раз.
Я-то сам не практикую такие вещи, но если нужен код - пожалуйста.
Если Вы не хотите давать новичку гранату - не значит , что ее нет.
Пусть лучше "подорвется" в начале пару раз.
Я-то сам не практикую такие вещи, но если нужен код - пожалуйста.
Код: Выделить всё
create or alter procedure drop_tables (
prefix varchar(10)
)
as
declare table_name varchar(31) ;
begin
for
select
a.rdb$relation_name
from
rdb$relations a
where
a.rdb$system_flag = 0
and a.rdb$view_blr is null
and a.rdb$relation_name starting upper(:prefix)
into :table_name
do
begin
execute statement 'drop table '||:table_name ;
end
end
Re: Хранимая процедура FireBird
Я не сторонник управления схемой с помощью хранимых процедур и не любитель советовать ,
но, думаю , Вы согласитесь , что предложенный код - то что хотел ТС.
Или не согласны , уважаемый kdv ?
но, думаю , Вы согласитесь , что предложенный код - то что хотел ТС.
Или не согласны , уважаемый kdv ?
Re: Хранимая процедура FireBird
да ради бога.
Re: Хранимая процедура FireBird
Уважаемый, а вы всегда стараетесь дать вопрошающему ответ, который он хотел, даже если просит откровенную х..ню?Massa писал(а):Я не сторонник управления схемой с помощью хранимых процедур и не любитель советовать ,
но, думаю , Вы согласитесь , что предложенный код - то что хотел ТС.
Или не согласны , уважаемый kdv ?
Если так, то вы злой человек, и вообще садист, наверное.
ЗЫ: Я сам себе собрался аппендицит вырезать, книжку по анатомии уже изучил. Посоветуйте, как правильно стерилизовать скальпель?
Re: Хранимая процедура FireBird
WildSery,
Ну, тут все просто - сначала покупаете бутылку водки и выпиваете залпом,так сакзать, стерилизуете
внутренние органы (вместе с аппендицитом). Потем берете скальпель ...
... желание самоистязатьсо к этому времени должно пройти. Вот и все.
Ну, тут все просто - сначала покупаете бутылку водки и выпиваете залпом,так сакзать, стерилизуете
внутренние органы (вместе с аппендицитом). Потем берете скальпель ...
... желание самоистязатьсо к этому времени должно пройти. Вот и все.