MiL napisał(a)
Rozwiazalem to tak ze lista rekordow jest ladowana do aplikacji (napisanej w C++) i tam to dopiero jest obliczane.
Algorytm obliczania jest zapisany jako varchar w jednej kolumnie (np. (z1 + z1) / 100) ), a wartosci zmiennych sa w innych kolumnach.
A jak to zrobic w samym SQL to nie mam pojecia.
Zakładam, że nazwy zmiennych są identyczne jak nazwy kolumn więc naprzykład, masz
tabele "obliczenia":
z1|z2|formula| wynik
1|2|z1*z2|null
więc piszesz procedure:
CREATE PROCEDURE dbo.licz
AS
declare @formula nvarchar(500)
declare @exec nvarchar(1100)
declare qcursor cursor for
select formula
from obliczenia
where not formula is null
group by formula
open qcursor
fetch next from qcursor into @formula
while (@@FETCH_STATUS <> -1)
begin
set @exec = 'update obliczenia set ilosc = ' + @formula + ' where formula = ''' + @formula + ''''
exec (@exec)
fetch next from qcursor into @formula
end
close qcursor
deallocate qcursor
GO
a później tylko wywołujesz
Ta procedura pobiera formuly z tabeli obliczeniowej, później generuje zapytanie sql któr oblicza daną wartość, celowo grupuje aby nie robić po kilka razy zapytań dla tych samych formul.
Warunek jaki musisz spełnić to formula musi mieć składnie SQL-a, jesli nie to musisz napisać funkcje która sparsuje daną fraze...