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:
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:
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
 
Zurück
Oben