Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.06;
Скачать: CL | DM;

Вниз

как определить, имеется ли в базе данных определенная процедура?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
4-1165170629
Dmitry_177
2006-12-03 21:30
2007.05.06
Узнать высоту, ширину, цвет точки HBITMAP-а без модуля Graphics


3-1171441590
Монг
2007-02-14 11:26
2007.05.06
Компонет cxGrid


15-1176183399
Megabyte
2007-04-10 09:36
2007.05.06
Нынешнее состояние "начинающим"


1-1173696942
Novice
2007-03-12 13:55
2007.05.06
Файловая система, получение информации


2-1176321011
serko
2007-04-11 23:50
2007.05.06
В ListView строки разного цвета....