Optionaler Wert in Function

15/10/2009 - 11:25 von Patrick Pohlmann | Report spam
Hallo Zusammen,

ich habe folegnde Funktion:

ALTER FUNCTION dbo.Proz_Aktionsteilnahme
( @ContactServiceID INT, @Aktionsjahr INT)
RETURNS VARCHAR(8000)
AS
BEGIN

DECLARE @Output VARCHAR(8000)
SET @Output = ''
SELECT @Output = CASE @Output
WHEN '' THEN CONVERT( varchar(8000),
COALESCE(Aktionsbezeichnung + ', ','') + COALESCE(Aktionsjahr,''))
ELSE CONVERT( varchar(8000), @Output + nchar(13) +
nchar(10) + COALESCE(Aktionsbezeichnung + ', ','') +
COALESCE(Aktionsjahr,''))
END
FROM (SELECT TOP 100 A.Aktionsbezeichnung,
CONVERT(varchar(4),A.Aktionsjahr) as Aktionsjahr
FROM dbo.tbl_Aktionen A RIGHT OUTER JOIN
dbo.tbl_Aktionen_link Al ON A.AktionsID =
Al.AktionsID
WHERE (Al.ContactServiceID = @ContactServiceID) AND (A.Aktionsjahr =
@Aktionsjahr)
ORDER BY A.Aktionsjahr, A.Aktionsbezeichnung) B

RETURN @Output

END

Nun hàtte ich es gerne, dass der Wert @Aktionsjahr auch null sein kann und
das Kriterium in der WHERE Condition des SQL Statement endweder gar nicht
mehr erscheint oder NOT IS NULL ist.

Geht das? Wàre toll, wenn mir da jemand helfen könnte.

Vielen Dank und viele Grüße

Patrick
 

Lesen sie die antworten

#1 Uwe Ricken
16/10/2009 - 10:14 | Warnen spam
Servus Patrick,

das geht doch. Du must halt nur auf den Wert der Variablen "reagieren"...
Hier mal ein Beispiel "aus dem Hut"...

DROP FUNCTION dbo.test
GO

CREATE FUNCTION dbo.test(@SId int) RETURNS varchar(100)
AS
BEGIN
DECLARE @ReturnValue varchar(100)
IF ISNULL(@SId, 0) = 0
SET @ReturnValue = 'No SId given'
ELSE
SELECT TOP 1
@ReturnValue = SortName
FROM dbo.tblStammdaten
WHERE SId = @SId

RETURN @ReturnValue
END
GO

SELECT dbo.test(NULL)

HTH ;-)

Uwe Ricken
MCTS - SQL Server 2005

Ähnliche fragen