2
votes

Je veux attribuer le nombre de lignes à "variable"

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.


0 commentaires

3 Réponses :


1
votes

Vous pouvez essayer comme ci-dessous

DECLARE @row_count int;
SELECT @row_count = COUNT(*) FROM information;


2 commentaires

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



1
votes

Vous devez utiliser SELECT ou une sous-requête:

SELECT @row_count = COUNT(*)
FROM information;
--or
SET @row_count = (SELECT COUNT(*) FROM information);


0 commentaires

1
votes

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:


0 commentaires