Procedura: ottenere e impostare parametri per oggetti comando

Se gli oggetti comando vengono utilizzati per eseguire comandi in un database, le istruzioni SQL o le stored procedure eseguite richiedono spesso l'immissione di parametri.Nell'esempio seguente viene indicata una semplice istruzione Update nella quale sono richiesti parametri:

UPDATE Employees
SET LastName = @LastName, FirstName = @FirstName, BirthDate = @BirthDate
WHERE (EmployeeID = @EmployeeID)

Quando tale istruzione viene eseguita, è necessario fornire valori per tutti i parametri, ovvero @LastName, @FirstName, @BirthDate e @EmployeeID.Per eseguire questa operazione, si utilizzano gli oggetti parametro.Gli oggetti comando supportano una raccolta di parametri, ad esempio Parameters, che contiene un set di oggetti del tipo SqlParameter, OleDbParameter, OdbcParameter o OracleParameter.Nella raccolta è presente un solo oggetto parametro per ciascun parametro da passare.Se, inoltre, si chiama una stored procedure, potrebbe essere richiesto un ulteriore parametro per accettare il valore restituito della stored procedure.

[!NOTA]

Se si utilizza un dataset, generalmente i comandi non vengono eseguiti direttamentema passati alle query TableAdapter. Per ulteriori informazioni, vedere Procedura: riempire un dataset.

Impostazione dei valori di parametro

Prima di eseguire un comando, è necessario impostare un valore per ogni parametro del comando.

Per impostare il valore di un parametro

  • Per ciascun parametro della raccolta di parametri del comando, impostare la proprietà Value.

    Nell'esempio seguente viene illustrata l'impostazione dei parametri prima di eseguire un comando che fa riferimento a una stored procedure.Nell'esempio si presuppone che la raccolta di parametri sia stata già configurata con tre parametri denominati au_id, au_lname e au_fname.I singoli parametri vengono impostati in base al nome, per mettere in evidenza quale parametro viene impostato.

    With oleDbCommand1
        .CommandText = "UpdateAuthor"
        .CommandType = System.Data.CommandType.StoredProcedure
        .Parameters("au_id").Value = "172-32-1176"
        .Parameters("au_lname").Value = "White"
        .Parameters("au_fname").Value = "Johnson"
    End With
    
    OleDbConnection1.Open()
    oleDbCommand1.ExecuteNonQuery()
    OleDbConnection1.Close()
    
    oleDbCommand1.CommandText = "UpdateAuthor";
    oleDbCommand1.CommandType = System.Data.CommandType.StoredProcedure;
    
    oleDbCommand1.Parameters["au_id"].Value = "172-32-1176";
    oleDbCommand1.Parameters["au_lname"].Value = "White";
    oleDbCommand1.Parameters["au_fname"].Value = "Johnson";
    
    oleDbConnection1.Open();
    oleDbCommand1.ExecuteNonQuery();
    oleDbConnection1.Close();
    

Acquisizione dei valori restituiti

Spesso le stored procedure passano nuovamente i valori all'applicazione che le ha chiamate.

Per ottenere i valori restituiti dalle stored procedure

  1. Creare parametri la cui proprietà Direction è impostata su Output o InputOutput (se il parametro viene utilizzato nella procedura sia per ricevere sia per inviare valori).Assicurarsi che il tipo di dati del parametro corrisponda al valore restituito previsto.

  2. Dopo avere eseguito la stored procedure, leggere la proprietà Value del parametro passato.

Per ottenere il valore restituito di una stored procedure

  1. Creare parametri la cui proprietà Direction è impostata su ReturnValue.

    [!NOTA]

    È necessario che l'oggetto parametro relativo al valore restituito sia il primo elemento della raccolta di parametri.

  2. Assicurarsi che il tipo di dati del parametro corrisponda al valore restituito previsto.

    [!NOTA]

    Le istruzioni SQL Update, Insert e Delete restituiscono un intero che indica il numero di record sui quali viene eseguita l'istruzione.È possibile ottenere questo valore come valore restituito dal metodo ExecuteNonQuery.Per ulteriori informazioni, vedere Specifying Parameters and Return Values.

Nell'esempio seguente viene illustrato come ottenere il valore restituito di una stored procedure denominata CountAuthors.In questo caso si presuppone che il nome del primo parametro presente nella raccolta di parametri del comando sia "retvalue" e che il parametro sia configurato con la direzione ReturnValue.

Dim returnValue As Integer

oleDbCommand1.CommandText = "CountAuthors"
oleDbCommand1.CommandType = CommandType.StoredProcedure

oleDbConnection1.Open()
oleDbCommand1.ExecuteNonQuery()
oleDbConnection1.Close()

returnValue = CType(oleDbCommand1.Parameters("retvalue").Value, Integer)
MessageBox.Show("Return Value = " & returnValue.ToString())
int returnValue;

oleDbCommand1.CommandText = "CountAuthors";
oleDbCommand1.CommandType = CommandType.StoredProcedure;

oleDbConnection1.Open();
oleDbCommand1.ExecuteNonQuery();
oleDbConnection1.Close();

returnValue = (int)(oleDbCommand1.Parameters["retvalue"].Value);
MessageBox.Show("Return Value = " + returnValue.ToString());

Vedere anche

Attività

Procedura: creare ed eseguire un'istruzione SQL che restituisce righe

Procedura: creare ed eseguire un'istruzione SQL che restituisce un valore

Procedura: creare ed eseguire un'istruzione SQL che non restituisce valori

Procedura: eseguire una stored procedure che restituisce righe

Procedura: eseguire una stored procedure che restituisce un valore singolo

Procedura: eseguire una stored procedure che non restituisce valori

Concetti

Recupero di dati nell'applicazione

Using Parameters with a DataAdapter

Specifying Parameters and Return Values