ODBC-Skalarfunktionen (Transact-SQL)
Sie können ODBC-Skalarfunktionen in Transact-SQL-Anweisungen verwenden. Diese Anweisungen werden von SQL Server interpretiert. Sie können in gespeicherten Prozeduren und benutzerdefinierten Funktionen verwendet werden. Hierzu zählen Zeichenfolgen-, Uhrzeit-, Datums-, Intervall- und Systemfunktionen sowie numerische Funktionen.
Verwendung
SELECT {fn <function_name> [ (<argument>,....n) ] }
Funktionen
In den folgenden Tabellen sind ODBC-Skalarfunktionen aufgelistet, die nicht in Transact-SQL dupliziert werden.
Zeichenfolgenfunktionen
Funktion |
Beschreibung |
---|---|
BIT_LENGTH( string_exp ) (ODBC 3.0) |
Gibt die Länge des Zeichenfolgenausdrucks in Bits zurück. Kann nicht nur für string-Datentypen verwendet werden. Konvertiert daher string_exp nicht implizit in eine Zeichenfolge, sondern gibt die (interne) Größe des jeweiligen angegebenen Datentyps zurück. |
CONCAT( string_exp1,string_exp2) (ODBC 1.0) |
Gibt eine Zeichenfolge zurück, die das Ergebnis der Verkettung von string_exp2 und string_exp1 darstellt. Die Ergebniszeichenfolge hängt vom DBMS ab. Wenn die durch string_exp1 dargestellte Spalte z. B. einen NULL-Wert enthält, wird DB2 NULL zurückgeben. SQL Server hingegen gibt eine Zeichenfolge ungleich NULL zurückgeben. |
OCTET_LENGTH( string_exp ) (ODBC 3.0) |
Gibt die Länge des Zeichenfolgenausdrucks in Bytes zurück. Das Ergebnis ist die kleinste ganze Zahl, die nicht kleiner ist als die Anzahl der Bits dividiert durch 8. Kann nicht nur für string-Datentypen verwendet werden. Konvertiert daher string_exp nicht implizit in eine Zeichenfolge, sondern gibt die (interne) Größe des jeweiligen angegebenen Datentyps zurück. |
Numerische Funktion
Funktion |
Beschreibung |
---|---|
TRUNCATE( numeric_exp, integer_exp) (ODBC 2.0) |
Gibt numeric_exp abgeschnitten auf integer_exp-Positionen rechts vom Dezimaltrennzeichen zurück. Wenn integer_exp negativ ist, wird numeric_exp auf die |integer_exp|-Positionen links vom Dezimaltrennzeichen abgeschnitten. |
Uhrzeit-, Datums- und Intervallfunktionen
Funktion |
Beschreibung |
---|---|
CURRENT_DATE( ) (ODBC 3.0) |
Gibt das aktuelle Datum zurück. |
CURRENT_TIME[( time-precision )] (ODBC 3.0) |
Gibt die aktuelle lokale Zeit zurück. Das time-precision-Argument bestimmt die Genauigkeit des zurückgegebenen Werts bezüglich der Sekundenangaben. |
DAYNAME( date_exp ) (ODBC 2.0) |
Gibt eine Zeichenfolge zurück, die den für die Datenquelle spezifischen Namen des Tags (z. B. Sunday bis Saturday bzw. Sun. bis Sat. für eine Datenquelle in englischer Sprache oder Sonntag bis Samstag für eine Datenquelle in deutscher Sprache) für den Tagesteil von date_exp enthält. |
DAYOFMONTH( date_exp ) (ODBC 1.0) |
Gibt den Tag des Monats basierend auf dem Monatsfeld in date_exp als ganze Zahl im Bereich von 1 bis 31 zurück. |
DAYOFWEEK( date_exp ) (ODBC 1.0) |
Gibt den Arbeitstag basierend auf dem Wochenfeld in date_exp als ganze Zahl im Bereich von 1 bis 7 zurück, wobei 1 den Sonntag darstellt. |
HOUR( time_exp ) (ODBC 1.0) |
Gibt die Stunde basierend auf dem Stundenfeld in time_exp als ganze Zahl im Bereich von 0 bis 23 zurück. |
MINUTE( time_exp ) (ODBC 1.0) |
Gibt die Minute basierend auf dem Minutenfeld in time_exp als ganze Zahl im Bereich von 0 bis 59 zurück. |
MONTHNAME( date_exp ) (ODBC 2.0) |
Gibt eine Zeichenfolge zurück, die den für die Datenquelle spezifischen Namen des Monats (z. B. January bis December bzw. Jan. bis Dec. für eine Datenquelle in englischer Sprache oder Januar bis Dezember für eine Datenquelle in deutscher Sprache) für den Monatsteil von date_exp enthält. |
QUARTER( date_exp ) (ODBC 1.0) |
Gibt das Quartal in date_exp als ganze Zahl im Bereich von 1 bis 4 zurück, wobei 1 den Zeitraum vom 1. Januar bis 31. März darstellt. |
WEEK( date_exp ) (ODBC 1.0) |
Gibt die Woche des Jahres basierend auf dem Wochenfeld in date_exp als ganze Zahl im Bereich von 1 bis 53 zurück. |
Beispiele
A. Verwenden einer ODBC-Funktion in einer gespeicherten Prozedur
Im folgenden Beispiel wird eine ODBC-Funktion in einer gespeicherten Prozedur verwendet:
CREATE PROCEDURE dbo.ODBCprocedure
(
@string_exp nvarchar(4000)
)
AS
SELECT {fn OCTET_LENGTH( @string_exp )};
B. Verwenden einer ODBC-Funktion in einer benutzerdefinierten Funktion
Im folgenden Beispiel wird eine ODBC-Funktion in einer benutzerdefinierten Funktion verwendet:
CREATE FUNCTION dbo.ODBCudf
(
@string_exp nvarchar(4000)
)
RETURNS int
AS
BEGIN
DECLARE @len int
SET @len = (SELECT {fn OCTET_LENGTH( @string_exp )})
RETURN(@len)
END ;
SELECT dbo.ODBCudf('Returns the length.');
--Returns 38
C. Verwenden von ODBC-Funktionen in SELECT-Anweisungen
In den folgenden SELECT-Anweisungen werden ODBC-Funktionen verwendet:
DECLARE @string_exp nvarchar(4000) = 'Returns the length.';
SELECT {fn BIT_LENGTH( @string_exp )};
-- Returns 304
SELECT {fn OCTET_LENGTH( @string_exp )};
-- Returns 38
SELECT {fn CONCAT( 'CONCAT ','returns a character string')};
-- Returns CONCAT returns a character string
SELECT {fn TRUNCATE( 100.123456, 4)};
-- Returns 100.123400
SELECT {fn CURRENT_DATE( )};
-- Returns 2007-04-20
SELECT {fn CURRENT_TIME(6)};
-- Returns 10:27:11.973000
DECLARE @date_exp nvarchar(30) = '2007-04-21 01:01:01.1234567';
SELECT {fn DAYNAME( @date_exp )};
-- Returns Saturday
SELECT {fn DAYOFMONTH( @date_exp )};
-- Returns 21
SELECT {fn DAYOFWEEK( @date_exp )};
-- Returns 7
SELECT {fn HOUR( @date_exp)};
-- Returns 1
SELECT {fn MINUTE( @date_exp )};
-- Returns 1
SELECT {fn MONTHNAME( @date_exp )};
-- Returns April
SELECT {fn QUARTER( @date_exp )};
-- Returns 2
SELECT {fn WEEK( @date_exp )};
-- Returns 16