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
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.
Depois de executar o procedimento, leia a propriedade Value do parâmetro sendo passado de volta.
Para obter um procedimento do valor de retorno
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.
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