Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.10.2008, 13:37
dbgrid dbgrid вне форума
Прохожий
 
Регистрация: 01.10.2008
Сообщения: 7
Репутация: 10
Вопрос вызов функции из SQL запроса

здравствуйте уважаемые

хотелосьбы сделать нечто подобное)))
//************************************************** ***
sql:='update table1 set a=1, b=2, c=f1(a,b) ';
ADOCommand1.CommandText:=sql;
ADOCommand1.Execute;

....


function f1(a,b:integer):integer;
begin;
...
...
...
result:=...;
end;
//************************************************** ***

т.е. из sql запроса вызывать функцию из программы, причём в качестве аргументов пересалать данные из таблица (а, b)
как это можно организовать???
Ответить с цитированием
  #2  
Старый 16.10.2008, 20:43
Аватар для Appolon
Appolon Appolon вне форума
Новичок
 
Регистрация: 10.01.2008
Адрес: гЕйск
Сообщения: 76
Репутация: 16
По умолчанию

Немного не понятно конечно.
Но постораюсь. А может что типа вот этого подойдет??
Код:
sql:='update table1 set a=1, b=2, c=' +IntToStr(f1(a,b));
ADOCommand1.CommandText:=sql;
ADOCommand1.Execute;
....

function f1(a,b:integer):integer;
begin;
...
result:=...;
end;
А какие именно действия выполняет фунция??
__________________
From VasYa with LoVe...
Ответить с цитированием
  #3  
Старый 17.10.2008, 09:50
dbgrid dbgrid вне форума
Прохожий
 
Регистрация: 01.10.2008
Сообщения: 7
Репутация: 10
По умолчанию

спасибо за ответ
НО....
в функцию fun1(a,b) не будут переданы переменные a и b т.к. они являются именами полей таблицы table1 и обращение к ним возможно только в теле sql запроса
sql:='тело sql запроса' + внешнии функции;
в этом-то как раз и кроется вся проблема как из тела sql запроса сделать вызов функции используя данные полей таблицы...
Ответить с цитированием
  #4  
Старый 17.10.2008, 10:31
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Что такое SQL запрос? Это СТРОКА. Delphi не имеет механизма макросов и вызовы процедур из строки не выполнимы (строка для компилятора прозрачна).
Кто мешает после выполнения запроса вызвать ту же функцию f1 и передать ей в качестве параметров результат запроса?
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #5  
Старый 17.10.2008, 13:05
dbgrid dbgrid вне форума
Прохожий
 
Регистрация: 01.10.2008
Сообщения: 7
Репутация: 10
По умолчанию

ситуация следующая, ...
есть таблица table1, в ней 3 поля, A,B,C причём A и B поля мы заполняем а С вычисляется по очень сложному алгоритму)))настолько сложному что в sql запрос поместить весь алгоритм нельзя))поэтому алгоритм расчёта поля С выведен в отдельную функцию аргументами которой является информация из полей A и B,
для каждой записи в таблице свои данные полей A и B а соответственно и C

есть вариант перебора по порядку всех записей таблицы , расчёта, и занесения данных в поле C, но это во-первых громоздко, во вторых, при большой БД это занимает много время, поэтому хотелось бы весь расчёт поля C вывести в sql запрос, со ссылкой на внешнюю функцию

уфффф, всё)))
Ответить с цитированием
  #6  
Старый 17.10.2008, 13:11
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Такие вещи в SQL базах делаются в хранимых процедурах (Stored procedure).
__________________
Не забывайте делать резервные копии
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:47.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025