FUNCTION (funzione) in SQL Server
- 24-07-2022
- Toanngo92
- 0 Comments
In MS SQL Server, una funzione è una funzionalità che ci aiuta a raggruppare le istruzioni SQL in un gruppo e può essere riutilizzata molte volte, in modo simile alla scrittura di una funzione in un linguaggio di programmazione, ma con una differenza fondamentale nella sintassi: Francia.
Mục lục
Concetti di funzione in MS SQL Server
Se le istruzioni sono raggruppate e utilizzate, possiamo utilizzare completamente la procedura memorizzata e possiamo ancora farlo, ma la differenza più ovvia è che la funzione ha un valore di ritorno e la procedura memorizzata viene solo eseguita e non restituisce lo stesso valore di una funzione.
Le funzioni semplificano il programma e possono essere utilizzate molte volte. Immagina di dover svolgere un'attività complessa, di dover passare parametri (paremeter) dall'esterno ed elaborare una serie di istruzioni SQL in successione, quindi restituire un determinato valore per determinare la connessione.end e utilizzare il valore restituito per ulteriori lavori, allora la funzione è la soluzione più adatta a questo problema.
Le funzioni comunemente utilizzate in SQL Server sono le seguenti:
Funzioni deterministiche e non deterministiche (funzioni deterministiche e non deterministiche):
Le funzioni definitive restituiscono lo stesso risultato della query ogni volta che vengono chiamate con un insieme specificato di valori di input e specificano lo stesso stato del database. Le funzioni non definite restituiscono risultati diversi ogni volta che vengono chiamate con il valore di input specificato impostato anche se il database a cui si accede rimane lo stesso.
Ad esempio, se l'utente chiama la funzione GIORNO() in una determinata colonna, restituisce sempre il numero di giorni (int) per il parametro del tipo di dati della data passato. Tuttavia, se l'utente chiama la funzione DATENAME(), l'output non può essere previsto perché ogni esecuzione restituirà un valore diverso, in base al formato della data passata. Quindi la funzione GIORNO() è una funzione deterministica, mentre GIORNONOME() è una funzione non definita.
L'utente non può influenzare il determinismo delle funzioni integrate, ogni funzione incorporata è deterministica o non definita in base alla sua implementazione su SQL Server.
Alcune delle funzioni deterministiche e funzioni non deterministiche
Funzioni deterministiche integrate | Funzioni integrate non deterministiche |
POTENZA | @@SCRITTURA_TOTALE |
IL GIRO | CURRENT_TIMESTAMP |
RADIANTI | GETDATE |
SCAD | GETUTCDATE |
PAVIMENTO | GET_TRANSMISSION_STATUS |
QUADRATO | NUOVOID |
SQRT | NEWSEQUENZIALID |
TRONCO D'ALBERO | @@CONNESSIONI |
ANNO | @@CPU_BUSY |
addominali | @@DBTS |
COME IN | @@OZIARE |
ACOS | @@IOBUSY |
CARTELLO | @@PACK_RICEVUTO |
SENO | @@PACK_SENT |
Ci sono alcune funzioni che non sono sempre indefinite, puoi usarle nelle viste indicizzate se sono specificate in modo esplicito:
Funzione | descrizione |
CONVERTIRE | Determinato solo quando sussiste una delle seguenti condizioni: Esiste un tipo di origine sql_variant. Esiste un tipo di destinazione o un tipo di origine non definito sql_variant. Fai in modo che la sorgente e il target siano smalldatetime o datetime o un altro tipo di sorgente come string. Lo stile del parametro deve essere una costante definita. |
LANCIO | Specificare solo quando si utilizza smalldatetime, sql_variant, datetime |
ISDATE | Definire a meno che non venga utilizzato insieme alla funzione CONVERT |
CHECKSUM | Determina, ad eccezione di CHECKSUM(*) |
Definizione di funzione in SQL Server
Sintassi:
CREATE FUNCTION function_name (param_list) RETURN data_type AS BEGIN //statements RETURN value END
Lì dentro:
nome_funzione: nome della funzione
param_list : elenco di parametri passati alla funzione
RETURN data_type: specifica il tipo di dati di ritorno
AS : clausola che avvia il processo di descrizione delle istruzioni della funzione
//dichiarazioni : elenco di comandi SQL
Valore di RITORNO : valore di ritorno.
Per esempio:
CREATE FUNCTION tinhphepcong(@x INT, @y INT) RETURNS INT AS BEGIN DECLARE @kq @kq = @x + @y RETURN @kq; END;
Esempio 2:
CREATE FUNCTION sales.udfuncNetSale( @quantity INT, @list_price DEC(10,2), @discount DEC(10,2) ) RETURNS DEC(10,2) AS BEGIN RETURN @quantity * @list_price * (1 - @discount); END;
Questa funzione calcolerà il prezzo di un prodotto dopo essere stato ridotto.
Dopo aver eseguito l'inizializzazione di questa funzione, la vedrai in SSMS facendo clic su Programmabilità > Funzioni > Funzioni con valori scalari.
Come chiamare una funzione in SQL Server
Usiamo la sintassi functionname(param) per poter chiamare la funzione in SQL Server
SELECT phepnhan (10, 20) as kequa
SELECT sales.udfuncNetSale(10,100,0.1) ketqua
ALTER funzione in SQL Server
Simile a Stored procedure, per modificare una funzione, utilizzare la seguente sintassi:
ALTER FUNCTION [schema_name.]function_name (parameter_list) RETURN data_type AS BEGIN statements RETURN value END
Il nuovo contenuto della funzione sostituirà il vecchio contenuto. Questo comando può essere modificato solo con funzioni che hai creato tu stesso, non può modificare funzioni integrate come count, concat.
4. Funzione DROP in SQL Server
Per eliminare una funzione, utilizzare il comando DROP FUNCTION con la seguente struttura:
DROP FUNCTION [schema_name.]function_name; // schema_name trong quá trình học thường là dbo
Ad esempio, se si desidera eliminare la funzione creata sopra, eseguire il comando seguente:
DROP FUNCTION sales.udfNetSale;
Allo stesso modo, puoi eliminare solo le funzioni che hai creato tu stesso.
Alcune note:
- Ciascuna funzione può essere utilizzata ovunque nell'istruzione T-SQL e rientra nell'ambito del database.
- Possono essere presenti molti parametri, ma è possibile restituire un solo valore, è necessario restituire. (simile al concetto di funzione in programmazione)
- Qualsiasi istruzione T-SQL può essere utilizzata all'interno della funzione.
- In questa funzione è possibile richiamare un'altra funzione che è stata definita.