4514: Fehler bei CREATE FUNCTION, da für die %1!-Spalte kein Spaltenname angegeben ist.
Fehlermeldung:
Meldung 4514, Ebene 16, Status 1, Prozedur myfunction, Zeile 6
Fehler bei CREATE FUNCTION, da für die %1!-Spalte kein Spaltenname angegeben ist.
Ebene:
16.
Beschreibung:
Diese Fehlermeldung erscheint, wenn man versucht eine benutzerdefinierte Funktion zu erstellen, für die kein expliziter Spaltenname angegeben wurde und SQL Server keinen automatisch vergeben kann.
Auswirkungen:
Das SQL Statement kann zwar geparst werden, jedoch zur Laufzeit wird der Fehler ausgelöst.
Behebung:
Fehler der Ebene 15 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. Das Statement kann so nicht ausgeführt werden. Jede Spalte einer tabellenwertige Funktion muß durch einen eindeutigen Alias identifizierbar sein.
Versionen:
Alle Versionen von SQL Server ab SQL Server 2000.
Beispiele:
USE Northwind
IF OBJECT_ID ('dbo.myfunction') > 0
DROP FUNCTION dbo.myfunction;
GO
CREATE FUNCTION dbo.myfunction (@CustomerID nchar(5))
RETURNS TABLE
AS
RETURN
(
SELECT *, 1
FROM Northwind.dbo.Orders
WHERE CustomerID = @CustomerID
);
GO
SELECT * FROM dbo.myfunction ('ALFKI');
Anmerkungen:
Ein "normales" SELECT Statement wie
SELECT CustomerID, COUNT(*)
FROM Northwind.dbo.Orders
WHERE CustomerID = @CustomerID
GROUP BY CustomerID
funktioniert ausserhalb von tabellenwertigen Funktionen einwandfrei, trotz des fehlenden Alias für den COUNT(*) Ausdruck. Hier vergibt SQL Server automatisch den Alias "(No column name)". Dies funktioniert jedoch nicht in Funktionen. Hier muss der Anwender ggfs. explizit für jede Spalte einen Alias vergeben.