Webページ上でクリックされたボタンに基づいてデータベースから項目を削除します。ユーザーは自分のアカウントからアイテムを削除することを選択できます。従来のASPストアドプロシージャの戻り状況
アカウント番号とアイテム番号をストアドプロシージャに渡します。ストアドプロシージャは、存在する場合はアイテムを削除し、成功の場合は1を返し、エラーがあった場合は0を返します。
私の問題は、常に提出したときにエラーを返すASPページということです:私は、ストアド・プロシージャを直接提出する場合
ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed.
、私はアイテムを削除することができ、ステータスが1、それであればここでレコードが作成されます
:削除されず、レコードはそのため0として地位を持って、常にステータスを持っているのいずれかここで1または0
は、ストアドプロシージャで作成されたレコードがあるはずです
CREATE PROCEDURE dbo.SAVED_ITEM_DELETE
@AccountID int,
@Item int
AS
BEGIN
DECLARE @Status INT
SET @Status = 1
IF EXISTS(SELECT AccountID FROM Accounts_Items
WHERE AccountID = @AccountID AND Item = @Item)
BEGIN TRY
DELETE Account_Items
WHERE AccountID = @AccountID AND Item = @Item
END TRY
BEGIN CATCH
SET @status = 0
END CATCH
SELECT @Status AS Status
END
そして、ここでは、私はライン上のエラーを取得しています
dim de
Set de = Server.CreateObject("ADODB.recordset")
de.open "SAVED_ITEM_DELETE 1,49", connect,2
IF not de.EOF THEN
IF de("Status") = 1 THEN
response.write request("delete") & " - deleted"
ELSE
response.write request("delete") & " - not deleted"
END IF
END IF
プロシージャを呼び出すASPです:
IF NOT de.EOF THEN
してください、助けてくださいしてください!私はちょうどASPが、1または0のStatusというフィールドを持つレコードセットを見ないのではないかと思うことができません。
どうしてレコードセットが必要ですか?代わりに出力パラメータを使用してください... –
私はこれまでに聞いたことがありません。説明できますか?返信いただきありがとうございます。 – TVRV8S
sqlは非常にシンプルです。変数からパラメータに '@ status'を変更してキーワード' output'を追加するだけで、 'adoddbo.Command'に戻す方法は本当に思い出せません。私が最後にasp3を使ってから10年以上経ちました。 –