Witam,
jestem kompletnym żółtodziobem jeśli chodzi o SQL. Napisałem prosty kod. Jednak z jakiegoś powodu nie chce przypisać się wartość do zmiennej. Jakieś sugestie?
DECLARE @FK nvarchar(9), @a nvarchar(2), @b nvarchar(2), @c nvarchar(2)
SET @FK='-1x2+2x-1' --wzór funkcji
SET @a=LEFT(@FK,CHARINDEX('x2',@FK)-1)
SET @b=SUBSTRING(@FK,CHARINDEX('x2',@FK,1)+2,3)
IF LEN(@FK)>7
SET @c=RIGHT(@FK,2)
ELSE
SET @c=0
PRINT('a='+@a)
PRINT('b='+@b)
PRINT('c='+@c)
-- zmienne na potrzeby obliczeń
DECLARE @a1 int, @b1 int, @c1 int, @delta decimal
--przekształcenie stringów na int
SET @a1=CONVERT(int,@a)
SET @b1=CONVERT(int,@b)
SET @c1=CONVERT(int,@c)
--liczymy deltę
SET @delta=SQUARE(@b1)-4*@a1*@c1
PRINT('delta='+ CAST(@delta as nvarchar))
--liczymy miejsca zerowe
IF @delta>0
BEGIN
DECLARE @x1 decimal, @x2 decimal
SET @x1=(-1*@b1-SQRT(@delta))/(2*@a1)
SET @x2=(-1*@b1+SQRT(@delta))/(2*@a1)
PRINT(@x1)--nie działa
PRINT(@x2)--nie działa
PRINT((-1*@b1-SQRT(@delta))/(2*@a1))
PRINT((-1*@b1+SQRT(@delta))/(2*@a1))
END
ELSE IF @delta=0
BEGIN
DECLARE @x decimal
SET @x=(-@b1/2*@a1)
PRINT(@x)
END
ELSE
PRINT('Brak miejsc zerowych')