我想将总行数分配给名为“ @ 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;
我的目标:如果人数超过三十四,阻止添加新人。
答案 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);