Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

SQL Abfrage Fehler

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von webdesigner01, 28 Februar 2013.

  1. webdesigner01

    webdesigner01 Neuer Benutzer

    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
     
  2. ukulele

    ukulele Datenbank-Guru

    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.
     
  3. ukulele

    ukulele Datenbank-Guru

    PS: Das müsste übrigens in allen SQL Versionen genauso sein.
     
  4. Tommi

    Tommi Datenbank-Guru

    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
     
    ukulele gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden