Partilhar via


Como: Definir e obter parâmetros para objetos de comando

Se você estiver usando objetos de comando para executar comandos em um banco de dados, as instruções SQL ou procedimentos armazenados que estão executando frequentemente exigem parâmetros. Por exemplo, uma simples instrução Update que requer parâmetros pode parecer da seguinte forma:

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

Quando essa instrução é executada, você deve fornecer valores para todos os parâmetros (@LastName,@FirstName,@BirthDate e @EmployeeID). Para fazer isso, você usa objetos de parâmetro. Objetos de comando suportam uma coleção de parâmetros (por exemplo, Parameters) que contém um conjunto de objetos do tipo SqlParameter, OleDbParameter, OdbcParameter, ou OracleParameter. Há um objeto de parâmetro na coleção para cada parâmetro que você precisar passar. Além disso, se você estiver chamando um procedimento armazenado, você precisará de um parâmetro adicional para aceitar o procedimento de valor de retorno.

ObservaçãoObservação

Se você estiver usando um conjunto de dados, você normalmente não executa comandos diretamente. Em vez disso, você passa parâmetros para consultas TableAdapter, para obter mais informações, consulte Como: Preencher um Dataset com dados.

Definindo Valores de Parâmetro

Antes de executar um comando, você deve definir um valor para cada parâmetro no comando.

Para definir um valor de parâmetro

  • Para cada parâmetro na coleção de parâmetros do comando, defina sua propriedade Value.

    O exemplo a seguir mostra como definir parâmetros antes de executar um comando que referencia um procedimento armazenado. O exemplo supõe que você já configurou a coleção de parâmetros com três parâmetros nomeados au_id, au_lname, e au_fname. Os parâmetros individuais são definidos pelo nome para tornar claro qual parâmetro está sendo definido.

    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();
    

Obtendo Valores de Retorno

Procedimentos armazenados frequentemente passam valores de volta para o aplicativo que os chamou.

Para obter valores retornados por procedimentos

  1. Crie parâmetros cuja Direction for definida para a saída ou entrada/saída (se o parâmetro é usado no procedimento para receber e enviar valores). Certifique-se de que o tipo de dados do parâmetro corresponda ao valor de retorno esperado.

  2. Depois de executar o procedimento, leia a propriedade Value do parâmetro sendo passado de volta.

Para obter um procedimento do valor de retorno

  1. Crie parâmetros cuja Direction for definida como ReturnValue.

    ObservaçãoObservação

    O objeto de parâmetro para o valor de retorno deve ser o primeiro item na coleção de parâmetros.

  2. Certifique-se de que o tipo de dados do parâmetro corresponda ao valor de retorno esperado.

    ObservaçãoObservação

    As instruções SQL Update, Insert, e Delete retornam um valor inteiro indicando o número de registros afetados pela instrução. Você pode obter esse valor como o valor de retorno do método ExecuteNonQuery. Para obter mais informações, consulte Modifying Data with Stored Procedures (ADO.NET).

O exemplo a seguir mostra como obter o valor de retorno de um procedimento armazenado chamado CountAuthors. Nesse caso, assume-se que o primeiro parâmetro na coleção de parâmetros do comando é chamado "retvalue" e que está configurado com uma direção de 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());

Consulte também

Tarefas

Como: Criar e executar uma instrução SQL que retorna linhas

Como: Criar e executar uma instrução SQL que retorna um único valor.

Como: Criar e executar uma instrução de SQL que não retorna nenhum valor

Como: Executar um procedimento armazenado que retorna linhas

Como: Executar um procedimento armazenado que retorna um único valor.

Como: Executar um procedimento armazenado que não retorna nenhum valor

Conceitos

DataAdapter Parameters (ADO.NET)

Modifying Data with Stored Procedures (ADO.NET)

Outros recursos

Buscando dados em seu aplicativo