ODBC Scalar Functions (Transact-SQL)
Można używać funkcji skalarnych ODBC w instrukcjach Transact-SQL.Instrukcje te są interpretowane przez program SQL Server.Mogą być używane w procedurach składowanych i funkcjach definiowanych przez użytkownika.Dotyczy to funkcji tekstowych, liczbowych, godziny, daty, interwału i systemowych.
Sposób użycia
SELECT {fn <function_name> [ (<argument>,....n) ] }
Funkcje
W poniższej tabeli wymieniono funkcje skalarne ODBC, które nie są zduplikowane w Transact-SQL.
Funkcje ciągów
Funkcja |
Description |
---|---|
BIT_LENGTH( string_exp ) (ODBC 3.0) |
E_APPDOMAIN_ZOMBIE Działa nie tylko dla tekstowych typów danych.Dlatego wyrażenie string_exp nie zostanie bezpośrednio przekonwertowane na ciąg znaków, lecz zamiast tego zostanie zwrócony (wewnętrzny) rozmiar podanego typu danych. |
CONCAT( string_exp1,string_exp2) (ODBC 1.0) |
Zwraca ciąg znaków, będący połaczeniem wyrażeń string_exp2 i string_exp1.Ciąg wynikowy jest zależny od DBMS.Na przykład, jesli kolumna reprezentowana przez wyrażenie string_exp1 zawiera wartość NULL, to program DB2 zwróci wartość NULL, ale program SQL Server zwróci ciąg o wartości niebedącej NULL. |
OCTET_LENGTH( string_exp ) (ODBC 3.0) |
Zwraca długość wyrażenia tekstowego w bajtach.Wynikiem jest najmniejsza liczba całkowita nie mniejsza od liczby bitów podzielonej przez 8. Działa nie tylko dla tekstowych typów danych.Dlatego wyrażenie string_exp nie zostanie bezpośrednio przekonwertowane na ciąg znaków, lecz zamiast tego zostanie zwrócony (wewnętrzny) rozmiar podanego typu danych. |
Funkcja liczbowa
Funkcja |
Description |
---|---|
TRUNCATE( numeric_exp, integer_exp) (ODBC 2.0) |
Zwraca wartość liczbową numeric_exp obciętą do integer_exp miejsc po przecinku.Jeśli integer_exp jest liczbą ujemną, wartość numeric_exp zostanie obcięta do |integer_exp| miejsc przed przecinkiem. |
To procedura przechowywana zmienia się, czy określony profil jest profil domyślny dla użytkowników bazy danych.
Funkcja |
Description |
---|---|
Użytkownik bazy danych mogą mieć tylko jeden domyślny profilu prywatnego. |
Zwraca bieżącą datę. |
CURRENT_TIME[( time-precision )] (ODBC 3.0) |
Zwraca bieżącą godzinę lokalną.Argument time-precision określa dokładność sekundową zwracanej wartości. |
Profil, który został uprzednio domyślny profil jest nadal skojarzona z głównej, ale nie jest już profil domyślny. |
Returns a character string that contains the data source–specific name of the day (for example, Sunday through Saturday or Sun.through Sat.for a data source that uses English, or Sonntag through Samstag for a data source that uses German) for the day part of date_exp. |
DAYOFMONTH( date_exp ) (ODBC 1.0) |
Zwraca dzień miesiąca jako wartość z zakresu 1–31 na podstawie pola miesiąca w wyrażeniu date_exp. |
DAYOFWEEK( date_exp ) (ODBC 1.0) |
Zwraca dzień tygodnia jako wartość z zakresu 1–7 na podstawie pola tygodnia w wyrażeniu date_exp (1 oznacza niedzielę). |
Profil musi być już skojarzony z głównej. |
Widoki modułów zbierających dane (języka Transact-SQL) |
Moduł zbierający dane oferuje następujące widoki do wyświetlania informacji o konfiguracja modułów zbierających dane, takie jak właściwości typ modułu zbierającego dane, zestawy kolekcji i kolekcji zestaw elementów, a także wykonywanie statystyk, które są uzyskiwane, gdy kolekcja jest uruchamiana. |
Zwraca minuty jako wartość z zakresu 0–59 na podstawie minut w wyrażeniu time_exp. |
To pozyskiwania zwiększa bezpieczeństwo poprzez zapobieganie bezpośredni dostęp do tabel, podczas pozwalających na zmiany w tabelach nie wpływa na wszystkie aplikacje skojarzone. |
Returns a character string that contains the data source–specific name of the month (for example, January through December or Jan.through Dec.for a data source that uses English, or Januar through Dezember for a data source that uses German) for the month part of date_exp. |
Opis datetimeoffset |
DECLARE MyDatetimeoffset @ |
Formaty literału ciąg domyślnego (używany do klient niższego poziom) |
Zwraca tydzień roku jako wartość z zakresu 1–53 na podstawie pola tygodnia w wyrażeniu date_exp. |
Przykłady
A.Używanie funkcji ODBC w procedurach składowanych
-14: 00 do +14: 00
CREATE PROCEDURE dbo.ODBCprocedure
(
@string_exp nvarchar(4000)
)
AS
SELECT {fn OCTET_LENGTH( @string_exp )};
B.RRRR to cztery cyfry, począwszy od 0001 do 9999, które reprezentują w roku.
hh jest dwie cyfry, które należą do zakres od-14 do +14.
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.mm jest dwie cyfry zakres od 00 do 59.
Następujące instrukcje SELECT pozwalają na używanie funkcji ODBC:
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