Tôi hiện đang làm việc trên một dự án ASP cổ điển nói chuyện với một cơ sở dữ liệu Oracle. Tôi đang cố gắng tìm một cách để gọi một kịch bản Oracle PL/SQL một cách an toàn và chuyển các tham số với ADO. Giải pháp hiện tại xây dựng kịch bản lệnh SQL bằng tay với các biến được nhúng như sau:Gọi một truy vấn Oracle tham số từ ADODB trong ASP cổ điển
strSQL = "SELECT field1, etc FROM my_table WHERE (field = '" & filter_value & "')"
Điều này, tất nhiên, là xấu và không an toàn và mở để lạm dụng.
Mã mà tôi có cho đến nay (purloined từ asp cổ điển trang web dựa không khác nhau) trông như thế này:
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
này gây ra lỗi “Parameter đối tượng được không đúng quy định. Thông tin không nhất quán hoặc không đầy đủ được cung cấp ”
Phương pháp gọi Oracle/PL/SQL đúng với các tham số được đặt tên từ ADO là gì? Tôi cần phải sử dụng các tham số được đặt tên vì mã SQL thực tế có phần phức tạp hơn và các tham số khác nhau được sử dụng nhiều lần trong suốt lệnh SQL.
Hãy thử nhận xét dòng với NamedParameters = Đúng và xem điều đó có hữu ích không. – shahkalpesh
bạn đang sử dụng Tùy chọn Rõ ràng và bạn đã bao gồm một số loại tệp adovbs.inc cho các hằng số "quảng cáo" của mình chưa? – Funka
Vâng, tôi đã thử cả hai có và không có thuộc tính NamedParameters, và tôi bao gồm adovbs.inc. Tôi luôn sử dụng tùy chọn rõ ràng – Buzzrick