Aufrufe von Skalarfunktionen

Skalarfunktionen geben einen Wert für jede Zeile zurück. Beispielsweise verwendet die Skalarfunktion mit absolutem Wert eine numerische Spalte als Argument und gibt den absoluten Wert jedes Werts in der Spalte zurück. Die Escapesequenz zum Aufrufen einer Skalarfunktion ist

{fnscalar-function}

dabei ist scalar-function eine der Funktionen, die in Anhang E: Skalarfunktionen aufgeführt sind. Weitere Informationen zur Escapesequenz der Skalarfunktion finden Sie unter Escapesequenz für Skalarfunktionen in Anhang C: SQL Grammar.

Beispielsweise erstellen die folgenden SQL-Anweisungen das gleiche Ergebnisset von Kundennamen in Großbuchstaben. Die erste Anweisung verwendet die Escapesequenzsyntax. Die zweite Anweisung verwendet die native Syntax für Ingres für OS/2 und ist nicht interoperabel.

SELECT {fn UCASE(Name)} FROM Customers  
  
SELECT uppercase(Name) FROM Customers  

Eine Anwendung kann Aufrufe von Skalarfunktionen kombinieren, die native Syntax verwenden, und Aufrufe von Skalarfunktionen, die ODBC-Syntax verwenden. Angenommen, Die Namen in der Tabelle Employee werden als Nachname, Komma und Vorname gespeichert. Die folgende SQL-Anweisung erstellt ein Ergebnisset mit Nachnamen von Mitarbeitern in der Tabelle Employee. Die -Anweisung verwendet die ODBC-Skalarfunktion SUBSTRING und die SQL Server-Skalarfunktion CHARINDEX und wird nur für SQL Server.

SELECT {fn SUBSTRING(Name, 1, CHARINDEX(',', Name) - 1)} FROM Customers  

Für maximale Interoperabilität sollten Anwendungen die CONVERT-Skalarfunktion verwenden, um sicherzustellen, dass die Ausgabe einer Skalarfunktion der erforderliche Typ ist. Die CONVERT-Funktion konvertiert Daten von einem SQL Datentyp in den angegebenen SQL Datentyp. Die Syntax der CONVERT-Funktion ist

CONVERT(value_exp,data_type)

dabei value_exp ein Spaltenname, das Ergebnis einer anderen Skalarfunktion oder eines Literalwerts und data_type ein Schlüsselwort ist, das dem #define-Namen entspricht, der von einem SQL-Datentypbezeichner verwendet wird, wie in Anhang D: Datentypen definiert. Die folgende SQL-Anweisung verwendet z. B. die CONVERT-Funktion, um sicherzustellen, dass die Ausgabe der CURDATE-Funktion ein Datum und nicht ein Zeitstempel oder Zeichendaten ist:

INSERT INTO Orders (OrderID, CustID, OpenDate, SalesPerson, Status)  
   VALUES (?, ?, {fn CONVERT({fn CURDATE()}, SQL_DATE)}, ?, ?)  

Um zu bestimmen, welche Skalarfunktionen von einer Datenquelle unterstützt werden, ruft eine Anwendung SQLGetInfo mit den Optionen SQL_CONVERT_FUNCTIONS, SQL_NUMERIC_FUNCTIONS, SQL_STRING_FUNCTIONS, SQL_SYSTEM_FUNCTIONS und SQL_TIMEDATE_FUNCTIONS auf. Um zu bestimmen, welche Konvertierungsvorgänge von der CONVERT-Funktion unterstützt werden, ruft eine Anwendung SQLGetInfo mit einer der Optionen auf, die mit SQL_CONVERT.