Je souhaite supprimer un élément d'une base de données en fonction d'un bouton qui est cliqué sur une page Web. Un utilisateur peut choisir de supprimer des éléments de son compte. Je passe le numéro de compte et le numéro d'article à une procédure stockée.État de retour de la procédure stockée ASP classique
La procédure stockée supprime l'élément s'il existe et renvoie 1 pour la réussite ou 0 s'il y a eu une erreur.
Mon problème est que la page ASP lorsqu'il est soumis en permanence retourne une erreur:
ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed.
Si je soumets la procédure stockée directement, je peux supprimer l'élément et un enregistrement est créé où le statut est 1. Si elle n'est pas supprimé, record a le statut 0.
par conséquent, il devrait toujours être un jeu d'enregistrements qui a créé le statut 1 ou 0.
Voici la procédure stockée:
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
Et voici l'ASP qui appelle la procédure
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
Je reçois l'erreur sur la ligne:
IF NOT de.EOF THEN
S'il vous plaît, s'il vous plaît, s'il vous plaît aider! Je ne peux pas comprendre pourquoi ASP ne voit pas un jeu d'enregistrements avec un champ appelé Status qui est 1 ou 0.
Pourquoi avez-vous besoin d'un recordset de toute façon? utiliser un paramètre de sortie à la place ... –
Je n'en ai jamais entendu parler auparavant. Peux-tu expliquer? Merci d'avoir répondu. – TVRV8S
Le sql est très simple - il suffit de changer le '@ status' d'une variable en un paramètre et d'ajouter le mot-clé' output', mais je ne me souviens vraiment pas comment le retrouver dans 'adoddbo.Command'. Cela fait plus de dix ans que j'ai utilisé asp3 pour la dernière fois. –