Dynamic SQL in Function

14/08/2008 - 18:24 von Anton Hengg | Report spam
Hallo Zusammen,

SQL2008:
kann mir von Euch jemand sagen wie das in einer Funktion lösen kann:
Das muss eine Funktion sein, da ich diese aus einer anderen Funktion
aufrufen bzw. verwenden möchte.

IF @Sprache='DEU' SELECT @ERG=[DEU] FROM TTextbausteine WHERE Nr=@Nr
IF @Sprache='ENG' SELECT @ERG=[ENG] FROM TTextbausteine WHERE Nr=@Nr
IF @Sprache='FRA' SELECT @ERG=[FRA] FROM TTextbausteine WHERE Nr=@Nr
IF @Sprache='CER' SELECT @ERG=[CER] FROM TTextbausteine WHERE Nr=@Nr
usw.

Gruss
Anton
 

Lesen sie die antworten

#1 dominik.reichert
15/08/2008 - 00:06 | Warnen spam
Hey Anton,

ich versuchs mal:

Create Function ... (das machst du am besten über das Management
Studio und füllt die Platzhalter...)
(
@Sprache varchar(3)
)
RETURNS varchar(3)
AS
BEGIN

DECLARE @ERG varchar(3)

IF @Sprache = 'DEU'
BEGIN
SELECT @ERG=[DEU] FROM TTextbausteine WHERE Nr=@Nr
END

IF @Sprache = 'ENG'
BEGIN
SELECT @ERG=[ENG] FROM TTextbausteine WHERE Nr=@Nr
END
.
.
.

Return @ERG
END
Ich vermute mal, dass du Statt [ENG]/[DEU] die Spalte aus der Tabelle
TTextbausteine nehmen musst, die den entsprechenden Wert enthàlt.
Andernfalls könntest du es mal mit CASE versuchen:

CASE @Sprache
WHEN @Sprache = 'DEU' THEN @ERG=SELECT @ERG=[DEU] FROM TTextbausteine
WHERE Nr=@Nr
WHEN @Sprache = 'ENG' THEN @ERG=SELECT @ERG=[ENG] FROM TTextbausteine
WHERE Nr=@Nr
ELSE SELECT @ERG = [CER] FROM TTextbausteine WHERE Nr=@Nr
END

Ich hoffe, dass die Syntax so stimmt und dass ich dir helfen konnte!

Gruß

Latte

Ähnliche fragen