Share via


Procedura: ottenere e impostare parametri per oggetti comando

Aggiornamento: novembre 2007

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 un insieme di parametri, ad esempio Parameters, che contiene una serie di oggetti del tipo SqlParameter, OleDbParameter, OdbcParameter o OracleParameter. Nell'insieme è 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 direttamente ma 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 dell'insieme 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 l'insieme di parametri sia stato già configurato 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. Se nella stored procedure il parametro viene utilizzato sia per inviare che per ricevere valori, creare parametri con la proprietà Direction impostata su Output o InputOutput. 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 con la proprietà Direction impostata su ReturnValue.

    Nota:

    È necessario che l'oggetto parametro relativo al valore restituito sia il primo elemento dell'insieme 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 valore integer 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 Modifica di dati con le stored procedure (ADO.NET).

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 nell'insieme 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

Parametri di DataAdapter (ADO.NET)

Modifica di dati con le stored procedure (ADO.NET)

Altre risorse

Recupero di dati nell'applicazione