Como executar SQL com parâmetros procedimentos armazenados usando o provedor ODBC .NET e Visual translation from VPE for Csharp .NET

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 310130
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 309486.
Para uma versão deste artigo do Microsoft Visual C++. NET, consulte 310142.

Este artigo se refere ao seguinte namespace Microsoft .NET Framework Class Library:
  • Microsoft.Data.ODBC

NESTA TAREFA

Sumário
Este passo a passo descreve como chamar um procedimento SQL Server armazenados com parâmetros usando o provedor gerenciado do ODBC .NET e .NET translation from VPE for Csharp Visual.

Embora a executar um procedimento armazenado parametrizado usando o provedor de ODBC do .NET é pouco diferente de executar o mesmo procedimento usando o SQL ou o provedor OLE DB, há uma diferença importante: o procedimento armazenado deve ser chamado usando a sintaxe ODBC CALL em vez do nome do procedimento armazenado. Para obter informações adicionais sobre essa sintaxe chamar, consulte o tópico "Chamadas de procedimento" na referência do programador de ODBC na biblioteca MSDN.

back to the top

Exemplos de sintaxe de chamada

  1. Aqui está um exemplo da sintaxe de chamada para um procedimento armazenado real no banco de dados Northwind que espera um parâmetro de entrada:
    {CALL CustOrderHist (?)}
  2. Eis um exemplo da sintaxe da chamada para um procedimento armazenado que espera um parâmetro de entrada e retorna um valor de retorno e parâmetro de saída de um. O primeiro espaço reservado representa o valor retorno:
    {? = CALL Procedure1 (?, ?)
  3. O ODBC .NET Managed provedor, como o provedor OLE DB, processa parâmetros pela posição ordinal (baseado em zero) e não por nome.
back to the top

Projeto - parâmetros de entrada única de teste

  1. Se você ainda não fez isso, baixe e instale o provedor gerenciado do .NET ODBC no seguinte site da Microsoft:
  2. Inicie o Visual Studio.NET e crie um novo Visual translation from VPE for Csharp .NET Windows Application com um nome de sua escolha.
  3. No menu Project , clique em Adicionar referência e, em seguida, clique duas vezes Microsoft.Data.ODBC.dll adicioná-lo à lista de itens selecionados. Feche a caixa de diálogo referências .
  4. Pelo muito superior da janela de código, adicione as instruções a seguir:
    using System.Data;using Microsoft.Data.Odbc;					
  5. Arraste um controle de botão da caixa de ferramentas para o formulário padrão.
  6. Clique duas vezes o botão de comando para alternar para a janela código para o evento Click do botão. Insira ou cole o código abaixo no procedimento de evento de clique , modificando a seqüência de conexão SQL Server conforme necessário:
    OdbcConnection cn;OdbcCommand cmd;OdbcParameter prm;OdbcDataReader dr;try {    //Change the connection string to use your SQL Server.    cn = new OdbcConnection("Driver={SQL Server};Server=servername;Database=Northwind;Trusted_Connection=Yes");    //Use ODBC call syntax.    cmd = new OdbcCommand("{call CustOrderHist (?)}", cn);    prm = cmd.Parameters.Add("@CustomerID", OdbcType.Char, 5);    prm.Value = "ALFKI";    cn.Open();    dr = cmd.ExecuteReader();    //List each product.    while (dr.Read()) 	Console.WriteLine(dr.GetString(0));    //Clean up.    dr.Close();    cn.Close();}catch (OdbcException o) {    MessageBox.Show(o.Message.ToString());}					
  7. Execute o projeto. Este código chama o procedimento armazenado "CustOrderHist", passando o CustomerID como um único parâmetro de entrada e retorna um conjunto de resultados. Na janela de saída, você deve ver a lista de produtos encomendados pelo cliente Northwind ALFKI.

    Observação : pressione CTRL + ALT + O, para abrir a janela de saída.
back to the top

Projeto - tipos de vários parâmetros de teste

  1. Usando o Query Analyzer, crie o seguinte procedimento armazenado no banco de dados de exemplo Northwind. Esse procedimento armazenado aceita um CustomerID como um parâmetro de entrada e retorna uma lista de pedidos feitos por cliente, retorna o frete médio por ordem pago por esse cliente como um parâmetro de saída e retorna o número de pedidos feitos por clientes como um valor de retorno.
    CREATE PROCEDURE usp_TestParameters@CustID CHAR(5),@AvgFreight MONEY OUTPUTASSELECT @AvgFreight = AVG(Freight) FROM Orders WHERE CustomerID = @CustIDSELECT * FROM Orders WHERE CustomerID = @CustIDRETURN @@ROWCOUNT					
  2. Repetir as etapas 1 a 6 acima, substituindo o seguinte código no procedimento de evento Click do botão de comando:
    OdbcConnection cn;try {    cn = new OdbcConnection("Driver={SQL Server};Server=servername;Database=Northwind;Trusted_Connection=Yes");    OdbcCommand cmd = new OdbcCommand("{? = call usp_TestParameters (?, ?)}", cn);    OdbcParameter prm = cmd.Parameters.Add("@RETURN_VALUE", OdbcType.Int);    prm.Direction = ParameterDirection.ReturnValue;    prm = cmd.Parameters.Add("@CustomerID", OdbcType.Char, 5);    prm.Value = "ALFKI";    prm = cmd.Parameters.Add("@AvgFreight", OdbcType.Double);    prm.Direction = ParameterDirection.Output;    cn.Open();    OdbcDataReader dr = cmd.ExecuteReader();    while (dr.Read())         Console.WriteLine(dr.GetString(0));    dr.Close();    cn.Close();    Console.WriteLine("Average Freight (output param): {0}", cmd.Parameters[2].Value);    Console.WriteLine("Order Count (return value): {0}", cmd.Parameters[0].Value);}catch (OdbcException o) {    MessageBox.Show(o.Message.ToString());}					
  3. Execute o projeto. Este código chama o procedimento armazenado "usp_TestParameters" que criamos na etapa 1 acima, passando em CustomerID como um único parâmetro de entrada e retorna um conjunto de resultados, um parâmetro de saída e um valor de retorno. Na janela Output, você deve ver a lista de pedidos feitos por cliente Northwind ALFKI, o cliente paga por ordem e a contagem de pedidos médio de frete.

    Observação : pressione CTRL + ALT + O, para abrir a janela de saída.
back to the top

Solução de problemas

  • A sintaxe de ADO que geralmente é usada para chamar procedimentos armazenados, onde o nome do procedimento sozinho é fornecido como CommandText, não pode ser usada com o provedor gerenciado do .NET ODBC.
  • Quando um procedimento armazenado retorna um conjunto de resultados, o valor de retorno e parâmetros de saída não estão disponíveis até que o conjunto de resultados foi acessado e fechado. Por exemplo, se a linha "dr.Close()" no segundo exemplo acima é omitido, nós seria não é possível recuperar os valores para o parâmetro de saída e o valor de retorno.
  • O ODBC .NET Managed provedor, como o provedor OLE DB, processa parâmetros pela posição ordinal (baseado em zero) e não por nome.
  • O provedor gerenciado do .NET ODBC não é fornecido com o Visual Studio .NET mas devem ser baixado separadamente.
back to the top
Referências
Para obter informações adicionais sobre a sintaxe ODBC CALL, consulte o tópico "Chamadas de procedimento" na referência do programador de ODBC na biblioteca MSDN.

back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 310130 - Última Revisão: 07/01/2004 20:45:43 - Revisão: 3.4

Microsoft ADO.NET (included with the .NET Framework), Microsoft ADO.NET 1.1, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# .NET 2003 Standard Edition

  • kbmt kbdatabase kbhowtomaster kbsystemdata KB310130 KbMtpt
Comentários