2012-04-04 37 views
6

Tôi đã viết một hàm VBScript để gọi thủ tục lưu sẵn. Trong quá khứ, tôi đã viết một số hàm gọi thủ tục lưu sẵn với các tham số đầu vào, nhưng trong trường hợp này, tôi cần phải làm việc với tham số Output.Gọi thủ tục lưu sẵn SQL với tham số đầu ra trong VBScript

Trong một ứng dụng khác, tôi gọi chính xác thủ tục được lưu trữ bằng cách sử dụng khung thực thể, do đó, thủ tục được lưu trữ là tốt.

Dưới đây là mã của tôi:

Function checkAccess(userid,link) 
    isAllowed = false 

    set cmd = Server.CreateObject("ADODB.Command") 
    cmd.CommandText = "Check_Permission" 
    cmd.ActiveConnection = Conn 
    cmd.NamedParameters = true 
    cmd.CommandType = adCmdStoredProc 
    cmd.Parameters.Append(cmd.CreateParameter("@Login", adVarChar, adParamInput, 50, userId)) 
    cmd.Parameters.Append(cmd.CreateParameter("@LinkId", adInteger, adParamInput, 50, link))  
    cmd.Parameters.Append(cmd.CreateParameter("@IsAllowed", adBoolean, adParamOutput, 10, isAllowed)) 

    checkAccess = isAllowed 
End Function 

Chức năng này luôn trả về false. Làm thế nào để làm cho nó hoạt động?

+0

Vị trí con trỏ là gì –

Trả lời

14

Bạn nên trả về giá trị của tham số đầu ra của bạn:

checkAccess = cmd.Parameters("@IsAllowed").Value 

Ngoài ra, các thông số đầu ra trong ADO không đòi hỏi một giá trị ban đầu và các thông số adBoolean không yêu cầu kích thước, vì vậy bạn có thể thay đổi của bạn thông số cuối cùng cho:

cmd.Parameters.Append(cmd.CreateParameter("@IsAllowed", adBoolean, adParamOutput)) 

Bạn cũng có thể loại bỏ biến isAllowed vì nó không còn cần thiết nữa.

Các vấn đề liên quan