Je travaille actuellement sur un projet ASP classique en train de dialoguer avec une base de données Oracle. J'essaie de trouver un moyen d'appeler en toute sécurité un script Oracle PL/SQL et de passer des paramètres avec ADO. La solution actuellement construit le script SQL manuellement avec des variables intégrées comme ceci:Appel d'une requête Oracle paramétrée depuis ADODB dans Classic ASP
strSQL = "SELECT field1, etc FROM my_table WHERE (field = '" & filter_value & "')"
Ceci, bien sûr, est laid et peu sûr, et à des abus.
Le code que j'ai jusqu'à présent (déroba à partir de divers sites Web basés non asp classique) ressemble à ceci:
dim strSQL, oConn, oCommand, oParam
set oConn = server.createobject("ADODB.Connection")
oConn.Open myConnString
strSQL = "SELECT field1, etc FROM my_table WHERE (field = :filter_field)"
dim oFilteredList
set oFilteredList = Server.CreateObject("ADODB.Command")
oFilteredList.ActiveConnection = oConn
oFilteredList.CommandText = strSQL
oFilteredList.CommandType = adCmdText
oFilteredList.NamedParameters = True
set oParam = oFilteredList.CreateParameter("filter_field", adVarChar, adParamInput, 10, filter_value)
oFilteredList.Parameters.Append oParam
set rsResults = oFilteredList.Execute
Cela provoque l'erreur « objet de paramètre est mal défini. Des informations incohérentes ou incomplètes ont été fournies "
Quelle est la méthode correcte d'appeler Oracle/PL/SQL avec des paramètres nommés d'ADO? J'ai besoin d'utiliser des paramètres nommés car le code SQL réel est un peu plus complexe, et différents paramètres sont utilisés plusieurs fois dans la commande SQL.
Essayez de commenter la ligne avec NamedParameters = True et voyez si cela aide. – shahkalpesh
utilisez-vous Option Explicit et avez-vous inclus une sorte de fichier adovbs.inc pour vos constantes "ad"? – Funka
Oui, j'ai essayé avec et sans la propriété NamedParameters, et j'inclus adovbs.inc. J'utilise toujours l'option explicite – Buzzrick