Я хочу назначить количество строк в «переменную» - PullRequest
2 голосов
/ 21 апреля 2019

Я хочу присвоить общее количество строк переменной с именем "@ 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 ]

2 голосов
/ 21 апреля 2019

Вам необходимо использовать SELECT или подзапрос:

SELECT @row_count = COUNT(*)
FROM information;
--or
SET @row_count = (SELECT COUNT(*) FROM information);
2 голосов
/ 21 апреля 2019

Вам не нужна переменная в этом случае.Вы можете решить это без использования переменной.Вы можете проверить результат запроса непосредственно на 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:

2 голосов
/ 21 апреля 2019

Вы можете попробовать как ниже

DECLARE @row_count int;
SELECT @row_count = COUNT(*) FROM information;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...