SqlDataSource и Oracle DataProvider я не могу показаться, чтобы иметь возможность использовать sqlDataprovider с ODP.NET

голоса
0

Я хочу, чтобы иметь возможность запускать мои SqlDataProvider против процедуры оракула хранится. Я могу использовать Oracle Provider от Microsoft, но это не позволило бы мне вызвать хранимую процедуру. Кто-нибудь был в состоянии получить эту работу? Я особенно хочу, чтобы иметь возможность использовать декларативные привязку данных. Я был в состоянии создать программно DataTable, но я хочу сделать это декларативно в .aspx.

Задан 09/12/2008 в 22:02
источник пользователем
На других языках...                            


2 ответов

голоса
2

SqlDataProvider, SqlConnection и другие классы приставка Sql из System.Data пространств имен, почти повсеместно относятся к конкретной реализации SQL-сервер. Это, однако, можно вызвать хранимую процедуру с использованием библиотеки System.Data.OracleClient Microsoft выпустила.

Пожалуйста , убедитесь , что при построении OracleCommand вы передаете в CommandType. StoredProcedure . В противном случае двигатель базы данных будет по умолчанию «таблицы прямого доступа», и так как он не найдет таблицу с именем хранимой процедуры, она будет падать.

Вот несколько примеров кода о том, как это будет работать за кулисами:

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

}

При использовании ASP .NET, вы можете использовать SqlDataSource для Acces клиента оракула со строкой соединения, определенной как:

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

Обратите внимание , что у нас есть немного OracleClient там. Тогда на SqlDataSource установить Выберите CommandType на него , чтобы быть StoredProcedure на странице ASPX, а остальные очень много работает , как SQL Server (на самом деле, вы на самом деле нужно сделать , это вызвать версию SQL Server).

Результат выглядит как:

  <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:OracleConnectionString %>"
            ProviderName="<%$ ConnectionStrings:OracleConnectionString.ProviderName %>" SelectCommand='TEST_ONE' SelectCommandType="StoredProcedure" ></asp:SqlDataSource>
Ответил 14/12/2008 в 12:40
источник пользователем

голоса
0

Вот шаги, чтобы вернуть таблицу, как оператор выбора ::

1) Вы должны вернуть курсор для выбора, а затем добавить в параметрах io_cursor IN OUT CURSOR

2) Когда вы потребляете его добавить еще один параметр

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

3) Добавить процедуру события для «выбора» события

4) защищен недействительным SqlDataSource1_Selecting (объект отправителя, SqlDataSourceSelectingEventArgs е) {((System.Data.OracleClient.OracleParameter) e.Command.Parameters [0]) OracleType = System.Data.OracleClient.OracleType.Cursor. }

Теперь он будет работать нормально.

Ответил 08/03/2013 в 19:05
источник пользователем

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