0

私はhtmlテーブルを繰り返し処理しています。

各行にはIDがあり、テーブルには2列/2プロパティがあります。

これが私のループです:

Dim id
    Dim prop1
    Dim prop2

For Each id In Request.Form("id")
    prop1 = Request.Form(id & "_prop1")
    prop1 = Request.Form(id & "_prop2")
Next

データベースのデータを更新したいとします...そのループに入れるかもしれません

"UPDATE table SET prop1 = '" & prop1 & "', prop2 = '" & prop2 & "'" WHERE id = '" & id & 
"'"

SQLストアドプロシージャとは何ですか?この操作にSQLストアドプロシージャを実装するにはどうすればよいですか?

たとえば、次のリンクにあります:http: //www.albofish.co.uk/ms-sql-stored-procedures-and-classic-asp/

更新するテーブルへの参照がありません...理解できません。ドー

この例では:http ://www.ehow.com/way_5901555_tutorial-sql-stored-procedures.html

フォームの値をプロシージャに入れる方法がわかりませんか?

4

2 に答える 2

4

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

于 2013-02-26T15:38:41.253 に答える
0

SQLストアドプロシージャはASP関数とは異なります。ストアドプロシージャは、データベースに作成するものです。構文は、RDBMSによって異なります。しかし、このようなもの:

CREATE PROCEDURE UpdateYourTable
    @id int, 
    @prop1 nvarchar(50).
    @prop2 nvarchar(50)
AS 

    SET NOCOUNT ON;

    UPDATE table 
    SET prop1 = @prop1, prop2 = @prop2 
    WHERE id = @id

GO

次に、投稿した記事と非常によく似たコードを使用して、このストアドプロシージャを呼び出します。

于 2013-02-26T15:36:33.593 に答える