0
我想根據網頁上單擊的按鈕從數據庫中刪除項目。用戶可以選擇從其帳戶中刪除項目。經典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爲什麼沒有看到一個名爲Status的字段的記錄集,它可以是1或0.
爲什麼你還需要記錄集?使用輸出參數,而不是... –
我以前沒有聽說過。你可以解釋嗎?感謝回覆。 – TVRV8S
這個sql非常簡單 - 你只需要將'@ status'從一個變量改變爲一個參數,然後添加關鍵字'output',但我真的不記得如何讓它回到'adoddbo.Command'。自從我上次使用asp3以來已經過去了十年。 –