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

Вниз

Помогите, кто чем может!   Найти похожие ветки 

 
Ega23 ©   (2005-01-17 12:02) [0]

Коллеги, у меня несколько странная просьба. Пришлите несколько хранимых процедур на диалекте Interbase мне на ящик. В выходные игрался с IB, столкнулся со множеством проблем, все сразу и не опишешь. Хотелось бы посмотреть на образцы кода процедур, по исходникам гораздо проще разбираться...
Адрес: egorov@dedal.dubna.ru


 
by ©   (2005-01-17 12:06) [1]

Ega23 ©   (17.01.05 12:02)
А какая версия Interbase используется и какой диалект базы?


 
by ©   (2005-01-17 12:18) [2]

Смотри почту.


 
Ega23 ©   (2005-01-17 12:28) [3]

Смотри почту.

Большое спасибо, думаю на первое время - хватит. А потом, надеюсь, и не понадобится - сам постораюсь разобраться...

Кстати, что такое SET TERM ; ^  ?   :о)

А какая версия Interbase используется и какой диалект базы?

Ох.. Там столько непоняток возникло...
Вообще-то была попытка создания базы под FireBird 1.5xxxx, но столкнулся с чисто "административными" трудностями - IBExpert не хочет работать без запущенного IB Server"а. Установил сервер (тот, что в комплекте с Delphi 7 идёт, по-моему 5.5), после чего база успешно создалась.
самое поганое, что нету книжек по IB, купить негде, ибо город маленький (заказал на OZone, но когда ещё дойдёт...), а тот хэлп, что установился вместе с сервером и экспертом - несколько "нечитабельный" после Books On-Line....


 
Sergey13 ©   (2005-01-17 12:36) [4]

2[3] Ega23 ©   (17.01.05 12:28)
>Вообще-то была попытка создания базы под FireBird 1.5xxxx, но столкнулся с чисто "административными" трудностями - IBExpert не хочет работать без запущенного IB Server"а.
Как это? ФБ был эмбеддед что ли? Так и так вроде можно. Или ФБ надо было запустить.


 
Ega23 ©   (2005-01-17 12:40) [5]

ФБ был эмбеддед что ли?

Ага. Вообще целью этих "игр" было повышение собственной квалификации - изучение новой СУБД + компонентов доступа из Delphi.
Возможно я всё в корне не так делаю, как надо. Возможно во мне ещё сильны стереотипы MS SQL....


 
Sergey13 ©   (2005-01-17 12:43) [6]

2[5] Ega23 ©   (17.01.05 12:40)
>Ага.
Надо эмбеддовские файлы (какие, написано в doc\README_embedded.txt) положить в каталог Эксперта согласно опять же doc\README_embedded.txt.
Создавать БД не пробовал, но с существующей БД работает.


 
by ©   (2005-01-17 13:58) [7]

Скачай и поставь все таки полный FireBird 1.5, а то у Embeded есть свои ограничения.

SET TERM ^ ; // Устанавливаем знак окончания выражения на ^ так как в хранимках точка с запятой используется как символ конца строки

CREATE PROCEDURE ADO_SQL_EXPLORER_HISTORY_D(
   REC_ID INTEGER)
AS
BEGIN
 DELETE FROM ADO_SQL_EXPLORER_HISTORY
 WHERE (REC_ID = :REC_ID);
END
^ // окончание выражения для создания хранимки

SET TERM ; ^ // возвращаем точку с запятой назад, как разделитель.

SET TERM используется в скриптах, когда много действий пачкой идет, и среди них есть создание view или sp, т.е. кода в котором тоже есть точка с запятой.

Немного корявое объяснение, но может подойдет. ))


 
Ega23 ©   (2005-01-17 14:04) [8]

Немного корявое объяснение, но может подойдет. ))

Более чем. В смысле, подойдёт, а не корявое... :о)
Некий аналог {IFDEF}, в общем...


 
YurikGL ©   (2005-01-17 14:22) [9]

Процедура добавления новой записи, возвращающая сгенерированный id-к

CREATE PROCEDURE ADDCITY(
   NAIMENOVAN VARCHAR(20) CHARACTER SET NONE)
RETURNS (
   ID INTEGER)
AS
begin
ID = gen_id(gcity, 1);
insert into city (Idcity,Naimenovan) values(:ID,:NAIMENOVAN);
end


Процедура изменения существующей записи
CREATE PROCEDURE EDITCITY(
   ID INTEGER,
   NAIMENOVAN VARCHAR(20) CHARACTER SET NONE)
AS
begin
update CITY set Naimenovan=:NAIMENOVAN Where IdCITY=:ID;
end


Рекуррентная процедура поиска по иерархической структуре типа сеть...

CREATE PROCEDURE RECURALLNODES(
   IDSBORKAIN INTEGER,
   COUNTSIN INTEGER)
RETURNS (
   IDSBORKAOUT INTEGER,
   COUNTSOUT INTEGER)
AS
begin
 IdSborkaOut=IdSborkaIn;
 CountSOut=CountSIn;
 Suspend;
 for Select IdSborkaChild, sum(CountS*:CountSIn)
     From IerhLink
     where IdSborkaParent=:IdSborkaIn
     group by IdSborkaChild
     into :IdSborkaOut, :CountSOut
     do begin

        For Select IdSborkaOut, CountSOut
            From RecurAllNodes(:IdSborkaOut,:CountSOut)
            InTo :IdSborkaOut,:CountSOut
            do suspend;

        End

end


 
YurikGL ©   (2005-01-17 14:23) [10]

Если есть кому - просьба покритиковать> YurikGL ©   (17.01.05 14:22) [9]


 
by ©   (2005-01-17 14:34) [11]

Есть один практический совет. Писать имена полей и названия табличек заглавными английскими буквами. Типа TP_ABONENT. FireBird поддерживает и написание типа TpAbonent, его нужно брать в кавычки "TpAbonent". Но если прийдется когда то вязать табличку через ODBC в Access или еще какие извраты делать, то может не работать наименование вида TpAbonent. Я когда то думал что мне это не пригодится, но когда пришлось 50 таблиц и код переделывать на наименования вида TP_ABONENT - я это правило запомнил очень четко )))


 
Ega23 ©   (2005-01-17 14:38) [12]

Есть один практический совет. Писать имена полей и названия табличек заглавными английскими буквами.

Я через IBEхpert работал, он сразу UpperCase делает.


 
Ega23 ©   (2005-01-17 14:38) [13]

2 YurikGL ©   (17.01.05 14:22) [9]

Спасибо.


 
by ©   (2005-01-17 14:51) [14]

Ega23 ©   (17.01.05 14:38) [12]
сразу UpperCase делает

Ну ему можно сказать этого не делать )) Но UpperCase надежнее ))



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.025 c
14-1106207207
guest_Dmitry
2005-01-20 10:46
2005.02.06
Процедуры в IB


9-1098905911
_Дельфин_
2004-10-27 23:38
2005.02.06
OpenGL и 3DSMax


3-1104839773
Некто
2005-01-04 14:56
2005.02.06
Count(*)


3-1104335744
denis24
2004-12-29 18:55
2005.02.06
create table "temp.db"......table is busy


14-1105981791
www.Vlad.uk
2005-01-17 20:09
2005.02.06
Скоро на нашей планете всё время будет ночь!