Форум: "Базы";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
Внизкак определить, имеется ли в базе данных определенная процедура? Найти похожие ветки
← →
pavel_guzhanov © (2007-02-15 10:02) [0]Подскажите пожалуйста, как мне определить, есть в базе процедура с определенным именем, или ее там нет?
При помощи IBQuery запускаю процедуру Proc1
IBQuery.sql.add("Select * from Proc1");
IBQuery.Open;
Если процедуры в базе нет, то ее надо создать, если есть, то надо выполнить запрос.
Как определить ее наличие?
← →
Виталий Панасенко © (2007-02-15 10:08) [1]ibase.ru статья о системных таблицах(запросах к ним). но многие НОРМАЛЬНЫЕ компоненты это умеют делать сами...
← →
ЮЮ © (2007-02-15 10:15) [2]
> Если процедуры в базе нет, то ее надо создать, если есть,
> то надо выполнить запрос.
И кто же позволит вот так просто создать процедуру на сервере первому попавшему юзверю.
← →
pavel_guzhanov © (2007-02-15 10:45) [3]
> но многие НОРМАЛЬНЫЕ компоненты это умеют делать сами
А стандартные компоненты Delphi - ненормальные? :о))
> И кто же позволит вот так просто создать процедуру на сервере
> первому попавшему юзверю.
У юзверя права SYSDBA
← →
PEAKTOP © (2007-02-15 11:06) [4]
SELECT COUNT(P.RDB$PROCEDURE_ID)
FROM RDB$PROCEDURES P
WHERE (P.RDB$PROCEDURE_NAME = "MY_PROC")
Если COUNT > 0 то процедура существует.
← →
ЮЮ © (2007-02-15 11:09) [5]В BOL, например, все примеры приведены в стиле
IF EXISTS (SELECT name FROM sysobjects
WHERE name = "proc1" AND type = "P")
DROP PROCEDURE proc1
GO
-- Creating a procedure on a nonexistent table.
USE pubs
GO
CREATE PROCEDURE proc1
AS
SELECT *
FROM does_not_exist
GO
А как с этим в ваших мануалах?
А разве создать и выполнить процедуру в рамках одной сессии в IB можно?
← →
Desdechado © (2007-02-15 11:34) [6]> А разве создать и выполнить процедуру в рамках одной сессии в IB можно?
Можно. Я часто делаю при обновлении БД служебные скрипты в виде "создать процедуру - выполнить - удалить", т.к. в FB нет безымянных блоков кода на PSQL.
[0]
Такой подход, мне кажется, является результатом плохого проектирования и еще более плохой стратегии обновления.
← →
PEAKTOP © (2007-02-15 15:08) [7]> Можно. Я часто делаю при обновлении БД служебные скрипты в виде "создать процедуру - выполнить - удалить", т.к. в FB нет безымянных блоков кода на PSQL.
В Firebird v2.0 есть. EXECUTE BLOCK называется.
← →
Desdechado © (2007-02-15 15:15) [8]PEAKTOP © (15.02.07 15:08) [7]
Возможно, я до двойки не добрался, используем полторушку.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c