Compartilhar 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.

Dica

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 conjunto de dados 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 propriedade é definida como 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 propriedade estiver definida como ReturnValue.

    Dica

    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.

    Dica

    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 Modificando dados com procedimentos armazenados.

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 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 valor

Conceitos

Buscando dados no aplicativo

Parâmetros DataAdapter

Modificando dados com procedimentos armazenados