Je veux être en mesure d'exécuter mon SqlDataProvider par rapport à une procédure stockée Oracle. Je peux utiliser le fournisseur Oracle de Microsoft mais cela ne me permettrait pas d'appeler une procédure stockée. Quelqu'un at-il pu faire fonctionner cela? Je veux particulièrement pouvoir utiliser la liaison de données déclarative. J'ai été en mesure de créer un DataTable par programmation, mais je veux le faire de manière déclarative dans le fichier .aspx.SqlDataSource et Oracle DataProvider Je ne peux pas sembler pouvoir utiliser le sqlDataprovider avec odp.net
Répondre
SqlDataProvider, SqlConnection et d'autres classes préfixées Sql à partir des espaces de noms System.Data font presque universellement référence aux implémentations spécifiques à SQL Server. Il est cependant possible d'appeler une procédure stockée à l'aide de la bibliothèque System.Data.oracleClient que Microsoft a libérée.
Veuillez vous assurer que lors de la construction d'OracleCommand, vous passez en CommandType. StoredProcedure. Sinon, le moteur de base de données utilisera par défaut l'accès direct à la table, et comme il ne trouvera pas de table portant le nom de votre procédure stockée, il tombera.
Voici quelques exemples de code sur la façon dont cela fonctionnerait dans les coulisses:
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
}
}
}
Lorsque vous utilisez ASP .NET, vous pouvez utiliser le SqlDataSource acces au client Oracle avec une chaîne de connexion définie comme:
<add name="OracleConnectionString"
connectionString="Data Source=YourServer;Persist
Security Info=True;Password="******";User ID=User1"
providerName="System.Data.OracleClient" />
Notez que nous avons le bit OracleClient ici. Ensuite, sur SqlDataSource, sélectionnez le CommandType sur StoredProcedure dans votre page ASPX, et le reste fonctionne à peu près comme SQL Server (en fait, vous devez le faire pour appeler la version SQL Server).
Le résultat ressemble un peu:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:OracleConnectionString %>"
ProviderName="<%$ ConnectionStrings:OracleConnectionString.ProviderName %>" SelectCommand='TEST_ONE' SelectCommandType="StoredProcedure" ></asp:SqlDataSource>
Voici les étapes pour retourner une table comme instruction select ::
1) Vous devez retourner un curseur pour le sélectionner, puis ajouter les paramètres io_cursor IN OUT CURSOR
2) Lorsque vous ajoutez un autre, il Consommez paramètre
<asp:Parameter Name="io_cursor" Direction="Output" />
3) Ajouter procédure d'événement pour l'événement 'en sélectionnant'
4) SqlDataSource1_Selecting vide protégé (expéditeur d'objet, SqlDataSourceSelectingEventArgs e) {((System.Data.OracleClient.OracleParameter) e.Command.Parameters [0 ]). OracleType = System.Data.OracleClient.OracleType.Cursor; }
Maintenant, cela fonctionnerait bien.
- 1. Comment mapper des UDT Oracle avec ODP.NET sans utiliser OracleObjectMappingAttribute?
- 2. Puis-je utiliser des connexions cryptées avec Oracle Instant Client et ODP.NET?
- 3. Pourquoi je ne peux pas utiliser mon serveur apache?
- 4. Je ne peux pas me connecter avec TOAD mais avec d'autres outils/applications
- 5. Puis-je exécuter un script Oracle Oracle arbitraire via ODP.NET?
- 6. Je ne peux pas utiliser sitemap lorsque j'utilise UrlMapping
- 7. Quelle version Oracle Client et ODP.NET dois-je installer (avec .NET 3.5)
- 8. execute sqldatasource avec le bouton
- 9. C# - Je sais que je peux le faire dans LINQ, mais je ne peux pas le faire fonctionner
- 10. Je ne peux pas définir IHTMLEventObj2 :: fromElement
- 11. subsonique 3 | ne peuvent pas T.save (DataProvider) | DataProvider est pas par défaut | ActiveRecord
- 12. C - Problèmes avec des pointeurs vers des pointeurs, peut ne pas sembler le voir
- 13. Juste ne peut pas sembler chercher le mobile Gmail html, ce qui ne va pas?
- 14. Python os.forkpty pourquoi je ne peux pas le faire fonctionner
- 15. liquibase - Je ne peux pas faire fonctionner l'échantillon
- 16. ODP.NET est-il redistribuable?
- 17. Comportement de la Viewbox que je ne peux pas comprendre
- 18. Je ne peux pas lire ma propre sérialisation .NET
- 19. Fournisseur de données Oracle (ODP.NET) non répertorié dans DbProviderFactories
- 20. Configuration ODP.NET dans Web.config
- 21. ODP.NET est-il requis pour Oracle 11g Client?
- 22. Je ne peux pas obtenir Domain.count() méthode statique pour travailler
- 23. Pourquoi je ne peux pas analyser un SimpleDateFormat avec le modèle "MMMMM dd" en Java?
- 24. Quelqu'un sait pourquoi je ne peux pas utiliser kAudioFormatFlagIsFloat au lieu de kAudioFormatFlagIsSignedInteger pour une AudioStreamBasicDescription?
- 25. Je ne peux pas appuyer sur GitHub sur cette case
- 26. Je ne peux pas utiliser la souris lors de l'exécution des tests de sélénium
- 27. Je ne peux pas accéder aux fichiers dans IIS 6
- 28. Pourquoi je ne peux pas lancer une boucle en Javascript?
- 29. Service Web 2005 que je ne peux pas utiliser dans l'application 3.5
- 30. Je ne peux pas lire la balise silverlight dans IE!
Microsoft a récemment annoncé le retrait du support d'Oracle. Maintenant, peut-être un bon moment pour se pencher à nouveau sur ODP. –