ストアドプロシージャは、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インジェクション攻撃の可能性を大幅に減らすことができます。