SqlDataSource e Oracle DataProvider eu não consigo ser capaz de usar o sqlDataprovider com odp.net

votos
0

Eu quero ser capaz de executar o meu SqlDataProvider contra um procedimento armazenado Oracle. Eu posso usar o provedor Oracle Microsoft, mas que não me permitiria chamar um procedimento armazenado. ninguém tem sido capaz de chegar a este trabalho? Eu particularmente quero ser capaz de usar dados declarativa ligação. Eu tenho sido capaz de criar programaticamente um DataTable, mas eu quero fazer isso declarativamente no aspx.

Publicado 09/12/2008 em 22:02
fonte usuário
Em outras línguas...                            


2 respostas

votos
2

SqlDataProvider, SqlConnection e outras classes prefixado Sql do System.Data namespaces referem-se quase universalmente para implementações específicas SQL-Server. É, no entanto, possível invocar um procedimento armazenado usando a biblioteca System.Data.OracleClient Microsoft ter lançado.

Certifique-se de que, ao calcular o OracleCommand você está passando em CommandType. StoredProcedure . Caso contrário, o motor de banco de dados será o padrão para o acesso 'table direta', e uma vez que não vai encontrar uma tabela com o nome do seu procedimento armazenado, ele vai cair.

Aqui está um código de exemplo sobre como isso iria funcionar nos bastidores:

using (OracleConnection conn = new OracleConnection("connection string here"))
{
    conn.Open();

    OracleCommand command = conn.CreateCommand();
    command.CommandType = CommandType.StoredProcedure;

    command.CommandText = "DATABASE_NAME_HERE.SPROC_NAME_HERE";
    // Call command.Parameters.Add to add your parameters.

    using (OracleReader reader = command.ExecuteReader())
    {
        while(reader.Read())
        {
            // Process each row
        }
    }

}

Ao usar ASP NET, você pode usar o SqlDataSource de acessar o cliente Oracle com uma seqüência de conexão definida como:

<add name="OracleConnectionString"
  connectionString="Data Source=YourServer;Persist 
    Security Info=True;Password="******";User ID=User1"
  providerName="System.Data.OracleClient" />

Note que nós temos a pouco OracleClient lá. Em seguida, no SqlDataSource definir o Select CommandType nele para ser StoredProcedure em sua página ASPX, eo resto praticamente obras como SQL Server (na verdade, você realmente tem que fazer isso para chamar a versão do SQL Server).

O resultado parece um pouco como:

  <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:OracleConnectionString %>"
            ProviderName="<%$ ConnectionStrings:OracleConnectionString.ProviderName %>" SelectCommand='TEST_ONE' SelectCommandType="StoredProcedure" ></asp:SqlDataSource>
Respondeu 14/12/2008 em 12:40
fonte usuário

votos
0

Aqui estão os passos para retornar uma instrução select mesa-como ::

1) Você deve retornar um cursor para a seleção, em seguida, adicione os parâmetros io_cursor IN OUT CURSOR

2) Quando você consome isso adiciona outro parâmetro

<asp:Parameter Name="io_cursor" Direction="Output" />

3) Adicionar procedimento de evento para o evento 'seleção'

4) protegido SqlDataSource1_Selecting vazio (objeto remetente, SqlDataSourceSelectingEventArgs e) {((System.Data.OracleClient.OracleParameter) e.Command.Parameters [0]) OracleType = System.Data.OracleClient.OracleType.Cursor.; }

Agora ele iria trabalhar bem.

Respondeu 08/03/2013 em 19:05
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more