![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() здравствуйте уважаемые
хотелосьбы сделать нечто подобное))) //************************************************** *** 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
|
||||
|
||||
![]() Немного не понятно конечно.
Но постораюсь. А может что типа вот этого подойдет?? Код:
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
|
|||
|
|||
![]() спасибо за ответ
НО.... в функцию fun1(a,b) не будут переданы переменные a и b т.к. они являются именами полей таблицы table1 и обращение к ним возможно только в теле sql запроса sql:='тело sql запроса' + внешнии функции; в этом-то как раз и кроется вся проблема как из тела sql запроса сделать вызов функции используя данные полей таблицы... |
#4
|
|||
|
|||
![]() Что такое SQL запрос? Это СТРОКА. Delphi не имеет механизма макросов и вызовы процедур из строки не выполнимы (строка для компилятора прозрачна).
Кто мешает после выполнения запроса вызвать ту же функцию f1 и передать ей в качестве параметров результат запроса? Не забывайте делать резервные копии |
#5
|
|||
|
|||
![]() ситуация следующая, ...
есть таблица table1, в ней 3 поля, A,B,C причём A и B поля мы заполняем а С вычисляется по очень сложному алгоритму)))настолько сложному что в sql запрос поместить весь алгоритм нельзя))поэтому алгоритм расчёта поля С выведен в отдельную функцию аргументами которой является информация из полей A и B, для каждой записи в таблице свои данные полей A и B а соответственно и C есть вариант перебора по порядку всех записей таблицы , расчёта, и занесения данных в поле C, но это во-первых громоздко, во вторых, при большой БД это занимает много время, поэтому хотелось бы весь расчёт поля C вывести в sql запрос, со ссылкой на внешнюю функцию уфффф, всё))) |
#6
|
|||
|
|||
![]() Такие вещи в SQL базах делаются в хранимых процедурах (Stored procedure).
Не забывайте делать резервные копии |