Parametri (Motore di database)
I parametri vengono utilizzati per lo scambio di dati tra stored procedure/funzioni e l'applicazione o lo strumento con cui sono state chiamate.
I parametri di input consentono al chiamante di passare un valore di dati alla stored procedure o alla funzione.
I parametri di output consentono alla stored procedure di passare nuovamente al chiamante un valore di dati o una variabile di cursore. Con le funzioni definite dall'utente non è possibile specificare parametri di output.
Ogni stored procedure restituisce al chiamante un codice integer. Se il valore del codice restituito non è impostato in modo esplicito nella stored procedure, verrà restituito 0.
Nella stored procedure seguente viene illustrato l'utilizzo di un parametro di input, di un parametro di output e di un codice restituito.
-- Create a procedure that takes one input parameter
-- and returns one output parameter and a return code.
CREATE PROCEDURE SampleProcedure @EmployeeIDParm INT,
@MaxTotal INT OUTPUT
AS
-- Declare and initialize a variable to hold @@ERROR.
DECLARE @ErrorSave INT
SET @ErrorSave = 0
-- Do a SELECT using the input parameter.
SELECT FirstName, LastName, JobTitle
FROM HumanResources.vEmployee
WHERE EmployeeID = @EmployeeIDParm
-- Save any nonzero @@ERROR value.
IF (@@ERROR <> 0)
SET @ErrorSave = @@ERROR
-- Set a value in the output parameter.
SELECT @MaxTotal = MAX(TotalDue)
FROM Sales.SalesOrderHeader;
IF (@@ERROR <> 0)
SET @ErrorSave = @@ERROR
-- Returns 0 if neither SELECT statement had
-- an error; otherwise, returns the last error.
RETURN @ErrorSave
GO
Quando si esegue una stored procedure o una funzione, il valore dei parametri di input può essere impostato su una costante o sul valore di una variabile. I valori dei parametri di output e dei codici restituiti devono essere restituiti in una variabile. I valori dei dati di parametri e codici restituiti possono inoltre essere scambiati sia con le variabili di Transact-SQL che con le variabili di applicazione.
Se una stored procedure viene chiamata da un batch o da uno script, per i valori dei parametri e dei codici restituiti è possibile utilizzare le variabili di Transact-SQL definite nel batch. Nell'esempio seguente viene illustrato un batch che esegue la stored procedure creata in precedenza. Il parametro di input è specificato come costante, mentre il parametro di output e il codice restituito restituiscono i valori corrispondenti nelle variabili di Transact-SQL:
-- Declare the variables for the return code and output parameter.
DECLARE @ReturnCode INT
DECLARE @MaxTotalVariable INT
-- Execute the stored procedure and specify which variables
-- are to receive the output parameter and return code values.
EXEC @ReturnCode = SampleProcedure @EmployeeIDParm = 19,
@MaxTotal = @MaxTotalVariable OUTPUT
-- Show the values returned.
PRINT ' '
PRINT 'Return code = ' + CAST(@ReturnCode AS CHAR(10))
PRINT 'Maximum Quantity = ' + CAST(@MaxTotalVariable AS CHAR(10))
GO
Per consentire lo scambio di dati tra variabili di applicazione, parametri e codici restituiti, in un'applicazione è possibile utilizzare gli indicatori di parametro associati alle variabili di applicazione.
Vedere anche