webForumDet fria alternativet

Function-problem

Databaser & SQL

4 svar · 585 visningar · startad av freddyk

Medlem sedan okt. 2006103 inlägg
Frågan#1

Varför fungerar itne denna function? REturnerar 0 när jag vill att den ska returnera TotBeloppInkMoms

TotBeloppEx fungerar. Ger 16666
Moms blir fel. 0 istället för korrekta 0.15
TotBeloppInk blir också 0 vilket är.... fel ;)

Någon som ser vart jag missar?

Tack på förhand...

ALTER FUNCTION [dbo].[TotBelopp] ( @fakturaID int ) 
RETURNS DECIMAL
AS
BEGIN

DECLARE @TotBeloppEx    INT
DECLARE @Moms			decimal(24,6)
DECLARE @TotBeloppInk	decimal(24,6)

SET @TotBeloppEx = 0
SET @Moms = 0
SET @TotBeloppInk = 0

BEGIN
	SET @TotBeloppEx = (SELECT (SUM(fakturaRadTotal)) FROM dbo.malte_faktura_fakturaRad WHERE dbo.malte_faktura_fakturaRad.fakturaID = @fakturaID)

	SET @Moms = (SELECT dbo.malte_faktura_faktura.fakturaMomsOmr FROM dbo.malte_faktura_faktura WHERE dbo.malte_faktura_faktura.fakturaID = @fakturaID)

	SET @TotBeloppInk = (@TotBeloppEx * @Moms)
END

RETURN @Moms

END
Medlem sedan sep. 2006867 inlägg
#2

Nu var det ett tag sen jag höll på med T-SQL men jag har för mig att om du multiplicerar en INT med en DECIMAL så blir båda INT, dvs 0.15 blir 0 och därför skiter det sig.

Testa och se :)

Medlem sedan okt. 2006103 inlägg
#3

ah... ok.... ska prova.... finns det ngn funktion i SQL som omvandlar INT till Decimal? som man kan köra i min function? :)

Medlem sedan juni 20008 205 inlägg
#4

Vad sägs om att deklarera TotBeloppEx som decimal istället?

Medlem sedan okt. 2006103 inlägg
#5

hahaha.... tja.... varför göra det så enkelt! :P

Tack Spango!

*ibland föder min idioti sig själv* :D

254 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)