Je souhaite attribuer le nombre total de lignes à une variable nommée "@row_count" .
CREATE PROC add_person
(
@id tinyint,
@name nvarchar(max),
@surname nvarchar(max),
@salary int,
@job nvarchar(max)
)
AS
BEGIN
INSERT INTO information
VALUES(@id,@name,@surname,@salary,@job)
END
DECLARE @row_count nvarchar(max)
SET @row_count = SELECT COUNT(*) FROM information
BEGIN TRAN
add_person 34,'asdf','asdf',3000,'asdf'
IF @row_count > 33
ROLLBACK TRAN
ELSE
COMMIT TRAN
GO;
Je sais. Je fais mal . Mais je n'ai rien trouvé sur la façon de procéder.
Je veux faire quelque chose comme ça:
DECLARE @row_count int SET @row_count = SELECT COUNT(*) FROM information
Mon objectif: empêcher l'ajout de nouvelles personnes si le nombre de personnes dépasse trente-quatre.
3 Réponses :
Vous pouvez essayer comme ci-dessous
DECLARE @row_count int; SELECT @row_count = COUNT(*) FROM information;
Erreur Doit déclarer la variable scalaire "@row_count".
@Codeblogger n'est pas si évident. Quoi qu'il en soit, voir modifier dans la réponse
Vous devez utiliser SELECT ou une sous-requête:
SELECT @row_count = COUNT(*) FROM information; --or SET @row_count = (SELECT COUNT(*) FROM information);
Vous n'avez pas besoin d'une variable dans ce cas. Vous pouvez le résoudre sans utiliser de variable. Vous pouvez vérifier le résultat de la requête directement sur le IF comme suit:
BEGIN TRAN
EXEC add_person 34,'asdf','asdf',3000,'asdf'
IF (SELECT COUNT(*) FROM information) > 33
ROLLBACK TRAN
ELSE
COMMIT TRAN
END
Au cas où vous auriez besoin d'attribuer le résultat de COUNT (*) dans une variable, regardez les réponses ici ou regardez la question suivante sur StackOverflow: