ParametriParameters

In questo argomento si applica a: SìSQL ServerSìDatabase SQL di AzureSìAzure SQL Data Warehouse Sì Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse I parametri vengono usati per lo scambio di dati tra stored procedure/funzioni e l'applicazione o lo strumento con cui sono state chiamate: Parameters are used to exchange data between stored procedures and functions and the application or tool that called the stored procedure or function:

  • I parametri di input consentono al chiamante di passare un valore di dati alla stored procedure o alla funzione.Input parameters allow the caller to pass a data value to the stored procedure or function.
  • I parametri di output consentono alla stored procedure di passare nuovamente al chiamante un valore di dati o una variabile di cursore.Output parameters allow the stored procedure to pass a data value or a cursor variable back to the caller. Con le funzioni definite dall'utente non è possibile specificare parametri di output.User-defined functions cannot specify output parameters.
  • Ogni stored procedure restituisce al chiamante un codice integer.Every stored procedure returns an integer return code to the caller. Se il valore del codice restituito non è impostato in modo esplicito nella stored procedure, verrà restituito 0.If the stored procedure does not explicitly set a value for the return code, the return code is 0.

Nella stored procedure seguente viene illustrato l'utilizzo di un parametro di input, di un parametro di output e di un codice restituito.The following stored procedure shows the use of an input parameter, an output parameter, and a return code:

-- 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.When a stored procedure or function is executed, input parameters can either have their value set to a constant or use the value of a variable. I valori dei parametri di output e dei codici restituiti devono essere restituiti in una variabile.Output parameters and return codes must return their values into a variable. I valori dei dati di parametri e di codici restituiti possono inoltre essere scambiati sia con le variabili di Transact-SQL sia con quelle dell'applicazione.Parameters and return codes can exchange data values with either Transact-SQL variables or application variables.

Se una stored procedure viene chiamata da un batch o da uno script, per i valori dei parametri e dei codici restituiti è possibile usare le variabili di Transact-SQL definite nello stesso batch.If a stored procedure is called from a batch or script, the parameters and return code values can use Transact-SQL variables defined in the same batch. Nell'esempio seguente viene illustrato un batch che esegue la stored procedure creata in precedenza.The following example is a batch that executes the procedure created earlier. Il parametro di input è specificato come costante, mentre il parametro di output e il codice restituito inseriscono i propri valori nelle variabili di Transact-SQL:The input parameter is specified as a constant and the output parameter and return code place their values in Transact-SQL variables:

-- 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.An application can use parameter markers bound to program variables to exchange data between application variables, parameters, and return codes.

Vedere ancheSee Also

CREATE PROCEDURE (Transact-SQL) CREATE PROCEDURE (Transact-SQL)
DECLARE @local_variable (Transact-SQL) DECLARE @local_variable (Transact-SQL)
CREATE FUNCTION (Transact-SQL) CREATE FUNCTION (Transact-SQL)
Sezione Parametri e riutilizzo del piano di esecuzione Parameters and Execution Plan Reuse section
Variabili (Transact-SQL)Variables (Transact-SQL)