SQL Abfrage Fehler

webdesigner01

Neuer Benutzer
Beiträge
3
Guten Tag,

Funktion:
Code:
ALTER FUNCTION dbo.test(@database as varchar(max))
RETURNS float
AS
BEGIN
RETURN(
SELECT [hour] FROM [@database].[dbo].[hour])
END;

Wieso funktioniert das nicht? Wenn ich @database mit der datenbank ersetze funktioniert das.

Beim Aufruf kommt die Fehlermeldung:
Ungültiger Objektname '@database.dbo.hour'.


Mit freundlichen Grüßen,
Webdesigner01
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
Eine DB kann kein @ im Namen haben. In deinem Funktionsnamen ist @database nicht der DB Name sondern eine Variable die an die Funktion übergeben werden kann. In deinem Select musst du aber schon die Datenbank angeben und hier wird keine Variable interpretiert, du musst also den Datenbanknamen angeben.

Um die Variable in dem Select als Datenbankname nutzen zu können müsstest du dir erst einen String mit dem Select zusammen bauen und den dann per EXEC ausführen.
 
Werbung:

Tommi

Datenbank-Guru
Beiträge
284
Hallo,

noch zur Ergänzung: der SQL Server läßt in Funktionen einen Aufruf von EXEC leider nicht zu.
Das heißt, dass eine solche Rückgabe dann in einer Prozedur und nicht in einer Funktion gelöst werden muss.

Viele Grüße,
Tommi
 
Oben