Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
15-1176183399
Megabyte
2007-04-10 09:36
2007.05.06
Нынешнее состояние "начинающим"


15-1176200510
Megabyte
2007-04-10 14:21
2007.05.06
ДАО программирования


11-1151003201
[e]Bu$ter
2006-06-22 23:06
2007.05.06
UMLI - Multi-language interface component


15-1175969605
cyborg
2007-04-07 22:13
2007.05.06
Однако!


6-1162736558
SHEI'TI
2006-11-05 17:22
2007.05.06
Отключить картинки в WebBrowser





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский