我想将行数分配给“变量”

时间:2019-04-21 18:30:33

标签: sql sql-server

我想将总行数分配给名为“ @ row_count” 的变量。

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

我知道。我在做。但是我还没有找到任何方法。


我想做这样的事情:

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;

我的目标:如果人数超过三十四,阻止添加新人。

3 个答案:

答案 0 :(得分:2)

在这种情况下,您不需要变量。您无需使用变量即可解决它。您可以像下面这样直接在IF上检查查询结果:

BEGIN TRAN

EXEC add_person 34,'asdf','asdf',3000,'asdf'

IF (SELECT COUNT(*) FROM information) > 33
    ROLLBACK TRAN
ELSE
    COMMIT TRAN
END

如果您需要将COUNT(*)的结果分配给变量,请查看此处的答案,或查看StackOverflow上的以下问题:

答案 1 :(得分:1)

您可以尝试以下操作

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

答案 2 :(得分:1)

您需要使用SELECT或子查询:

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