SqlDataProvider, SqlConnection и другие классы с префиксом Sql из пространств имен System.Data почти повсеместно относятся к конкретным реализациям SQL-Server. Однако можно вызвать хранимую процедуру с помощью библиотеки 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 для доступа к клиенту Oracle с помощью строки подключения, определенной как:
<add name="OracleConnectionString"
connectionString="Data Source=YourServer;Persist
Security Info=True;Password="******";User ID=User1"
providerName="System.Data.OracleClient" />
Обратите внимание, что у нас есть бит OracleClient. Затем на SqlDataSource установите Select 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>