![]() |
|
#1
|
|||
|
|||
![]() Помогите пожалуйста. есть две таблицы ostatki, potrebnost
таблицы ostatki, potrebnost имеют поля (diametr, gost , ves). Нужно если diametr и gost в одной таблице равны diametr и gost в другой то ves из одной таблице должен вычитаться из другой и записыватся в поле itog. Вот текст. Подскажите ,что не так Код:
Спасибо за помощь Последний раз редактировалось Admin, 26.10.2011 в 18:52. |
#2
|
|||
|
|||
![]() А на уровне SQL это нельзя сделать?
Код:
|
#3
|
|||
|
|||
![]() есть 2 подхода
1. на уровне SQL- пишешь SQL процедуру 2. на уровне пользовательской подключаемой библиотеки вечером покажу. |
#4
|
||||||
|
||||||
![]() /*---вот объявление функций пользователя.
Это оформляется в виде DLL. Я привожу этот пример только как рыбу. Обрати внимание на способ передачи параметров- cdecl. Это обязательное условие. Этот текст надо оформить в виде DLL- библиотеки и поместить ее в каталог C:\Interbase\Udf *'/ Код:
После того как ты изготовил DLL с твоими функциями пользователя на них можно ссылаться в тексте описания БД. Для этого надо сделать внешние ссылки на эти функции, как это указано ниже. Теперь твои функции можно применять также как и стандартные. Надо сказать что такую возможность предоставляют не все базы данныз. Лично я использую InterBase/FireBird, где все это есть. */ Код:
Теперь о втором способе. Можно в самой БД создать некое свойство, которое позволяет прямо по ходу дела анализировать ситуацию и соответственно ее обрабатывать. Это триггеры- специальные процедуры, внедренные в базу данных и запускающиеся автомтически при наступлении определенных событий в БД. Например, процедура Workks_trig_ins (см ниже) автоматически запустится ПЕРЕД вставкой новой строки в таблицу Works. Код:
Итак, после всего этого база данных перестает быть просто хранилищем, а приобретает определенный интеллект, чем программист должен уметь пользоваться. После того как программист заложил в БД функции, она приобретает способность производить первичную обработку информации и уже находится в состоянии, когда может по требованию пользователя выдать нужную информацию (перед тем ее обработав и представив в нужном виде!). Несколько советов Эти 2 способа в какой- то мере конкурируют между собой. Какой из них избрать для достижения заданной цели- решает программист. Мой совет В DLL следует помещать функции сложные. Они пишутся на языках высокого уровня и потому просты в отладке. Оформмять твои специфические функции как триггеры следует тогда, когда они достаточно просты и кроме того предвидится необходимость их изменять. Это так называемые Бизнес-правила. Например, как триггер следует оформить функцию вычета подоходного налогга. Если правила исчисления подоходного налога изменились- ты просто в твоей БД изменяешь эту функцию- и она автоматически действует для всех пользователей. */ |
#5
|
|||
|
|||
![]() Тов, Чайник, а вам не кажется, что вас нетуда понесло???
|