存储过程存在于您的后端数据库中,而不是您的 ASP 代码中。您发布的链接中可能让您感到困惑的是,它包含用于执行服务器端过程的客户端代码,未显示。
在您的情况下,实际的存储过程本身看起来像这样:
CREATE PROCEDURE dbo.MyProcedure
(
@prop1 varchar(255), --Fill in appropriate data types if necessary
@prop2 varchar(255),
@id int
)
AS
SET NOCOUNT ON;
UPDATE table
SET prop1 = @prop1,
prop2 = @prop2
WHERE id = @id;
(@sgeddes 是正确的,该过程应该包括SET NOCOUNT ON
. 我已将其添加到我的示例中。)
然后,您将使用以下客户端代码来调用该过程(我已从您的链接中编辑了代码以使其更易于理解)。
'Create ADO command
Set cmd = Server.CreateObject("ADODB.Command")
With cmd
'Set up DB connection to use, set the type of SQL command
.ActiveConnection = db
.CommandType = adCmdStoredProc
.CommandText = "dbo.MyProcedure" ' Set the name of the Stored Procedure to use
'Add a 255 character varchar parameter
.Parameters.Append .CreateParameter("@prop1",adVarChar, adParamInput, 255)
.Parameters("@prop1") = "Prop 1 Value"
'Add a 255 character varchar parameter
.Parameters.Append .CreateParameter("@prop2",adVarChar, adParamInput, 255)
.Parameters("@prop2") = "Prop 2 Value"
'Add a integer parameter, then pass the value of the variable userID to it
.Parameters.Append .CreateParameter("@id",adInteger, adParamInput)
.Parameters("@id") = userID
'Execute the command
.Execute
End With
'Clean up
set cmd = nothing
这显然比你现在拥有的代码要多得多。那你为什么要这么做?最重要的原因是安全。通过创建参数化过程并在参数中传递值,您可以大大降低任何类型的 SQL 注入攻击的可能性。