Funzioni scalari ODBC (Transact-SQL)

È possibile utilizzare le funzioni scalari ODBC all'interno di istruzioni Transact-SQL. Queste istruzioni sono interpretate da SQL Server ed è possibile utilizzarle in stored procedure e funzioni definite dall'utente. Queste includono funzioni per i valori stringa, numerici, di ora, di data, di intervallo e di sistema.

Utilizzo

SELECT {fn <function_name> [ (<argument>,....n) ] }

Funzioni

Nelle tabelle seguenti sono elencate le funzioni scalari ODBC non duplicate in Transact-SQL.

Funzioni per i valori stringa

Funzione

Descrizione

BIT_LENGTH(string_exp) (ODBC 3.0)

Restituisce la lunghezza in bit dell'espressione stringa.

Non funziona solo per i dati di tipo stringa. Pertanto, non converte implicitamente string_exp in una stringa ma restituisce le dimensioni interne del tipo di dati fornito.

CONCAT( string_exp1,string_exp2) (ODBC 1.0)

Restituisce la stringa di caratteri che risulta dalla concatenazione di string_exp2 e string_exp1. La stringa risultante dipende da DBMS. Ad esempio, se la colonna rappresentata string_exp1 contiene un valore NULL, DB2 restituisce NULL ma SQL Server restituisce una stringa non Null.

OCTET_LENGTH( string_exp ) (ODBC 3.0)

Restituisce la lunghezza in byte dell'espressione stringa. Il risultato è il più piccolo numero integer non inferiore al numero di bit diviso per 8.

Non funziona solo per i dati di tipo stringa. Pertanto, non converte implicitamente string_exp in una stringa ma restituisce le dimensioni interne del tipo di dati fornito.

Funzione numerica

Funzione

Descrizione

TRUNCATE( numeric_exp, integer_exp) (ODBC 2.0)

Restituisce numeric_exp troncato in corrispondenza di un numero di posizioni pari a integer_exp a destra del separatore decimale. Se integer_exp è negativo, numeric_exp viene troncato in corrispondenza di un numero di posizioni pari a |integer_exp| a sinistra del separatore decimale.

Funzioni di data, ora e intervallo

Funzione

Descrizione

CURRENT_DATE( ) (ODBC 3.0)

Restituisce la data corrente.

CURRENT_TIME[( time-precision )] (ODBC 3.0)

Restituisce l'ora locale corrente. L'argomento time-precision determina la precisione a livello di secondi del valore restituito.

DAYNAME( date_exp ) (ODBC 2.0)

Restituisce una stringa di caratteri che contiene il nome, specifico dell'origine dati, del giorno (ad esempio, da Sunday a Saturday o da Sun a Sat per un'origine dati che utilizza l'inglese o da lunedì a domenica per un'origine dati che utilizza l'italiano) per la parte relativa al giorno dell'argomento date_exp.

DAYOFMONTH( date_exp ) (ODBC 1.0)

Restituisce il giorno del mese in base al campo del mese in date_exp come valore integer nell'intervallo da 1 a 31.

DAYOFWEEK( date_exp ) (ODBC 1.0)

Restituisce il giorno della settimana in base al campo della settimana in date_exp come valore integer nell'intervallo da 1 a 7, dove 1 corrisponde al lunedì.

HOUR( time_exp ) (ODBC 1.0)

Restituisce l'ora in base al campo dell'ora in time_exp come valore integer nell'intervallo da 0 a 23.

MINUTE( time_exp ) (ODBC 1.0)

Restituisce i minuti in base al campo dei minuti in time_exp come valore integer nell'intervallo da 0 a 59.

MONTHNAME( date_exp ) (ODBC 2.0)

Restituisce una stringa di caratteri che contiene il nome, specifico dell'origine dati, del mese (ad esempio, da January a December o da Jan a Dec per un'origine dati che utilizza l'inglese o da gennaio a dicembre per un'origine dati che utilizza l'italiano) per la parte relativa al mese dell'argomento date_exp.

QUARTER( date_exp ) (ODBC 1.0)

Restituisce il trimestre relativo a date_exp come valore integer nell'intervallo da 1 a 4, dove 1 corrisponde al periodo 1 gennaio-31 marzo.

WEEK( date_exp ) (ODBC 1.0)

Restituisce la settimana dell'anno in base al campo della settimana in date_exp come valore integer nell'intervallo da 1 a 53.

Esempi

A. Utilizzo di una funzione ODBC in una stored procedure

Nell'esempio seguente viene utilizzata una funzione ODBC in una stored procedure:

CREATE PROCEDURE dbo.ODBCprocedure
    (
    @string_exp nvarchar(4000)
    )
AS
SELECT {fn OCTET_LENGTH( @string_exp )};

B. Utilizzo di una funzione ODBC in una funzione definita dall'utente

Nell'esempio seguente viene utilizzata una funzione ODBC in una funzione definita dall'utente:

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. Utilizzo di funzioni ODBC nelle istruzioni SELECT

Nella seguente istruzione SELECT vengono utilizzate funzioni 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

Vedere anche

Riferimento