Como: conjunto e Get Parameters for Command Objects

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ção:

Se você estiver usando um conjunto de dados, você normalmente não executa comandos diretamente.Em vez disso, você pode passar parâmetros para consultas de 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 cujas propriedades Direction são definidas como Output ou InputOutput (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 cujas propriedades Direction são definidas como ReturnValue.

    Observaçã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çã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 sistema autônomo o valor retornado a ExecuteNonQuery método. Para obter mais informações, consulte Using Procedimentos Armazenados to Atualizar Dados.

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 demonstrativo SQL que retorna linhas

Como: Criar e executar uma demonstrativo SQL que retorna um valor único

Como: Criar e executar uma demonstrativo SQL que retorna nenhum valor

Como: Executar um procedimento armazenado que retorna linhas

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

Como: Executar um procedimento armazenado que retorna nenhum valor

Conceitos

Usando parâmetros com um DataAdapter

Using Procedimentos Armazenados to Atualizar Dados

Outros recursos

Buscando dados em seu aplicativo