2014-10-16 4 views
0

Я попытался с кодом ниже:Как сохранить результат выражения select в переменную?

DECLARE @rec_count  int 
Set @rec_count= select 1 

но он показывает ошибку

"Неправильный синтаксис около Select".

+0

Вы должны быть более конкретным. Вы пытаетесь сохранить одно скалярное значение из одной строки (т. Е. Количество строк)? Или вы пытаетесь сохранить несколько столбцов и/или строк? Ответ на каждый из этих вопросов различен, и до сих пор люди отвечали только на одно скалярное значение. Итак, что вы пытаетесь достичь? –

ответ

-2
DECLARE @rec_count int; 
Set @rec_count = 1; 
+0

_Как сохранить результат выражения select в переменную? _ В этом ответе не используется какой-либо оператор select. – jpw

+0

Он исправляет ошибку синтаксиса. SELECT не требуется для установки значения переменной в 1. –

+0

Заголовок вопроса говорит «результаты отборочного заявления» – DavidG

3

Либо:

set @rec_count = (select 1) 

или

select @rec_count = 1 

Пример присвоения графа из таблицы в переменной:

set @rec_count = (select COUNT(*) from master..spt_values) 
select @rec_count = COUNT(*) from master..spt_values 

Однако, если вы дзю го необходимо присвоить значение переменной, вам не нужен какой-либо оператор выбора:

set @rec_count = 1 

или

declare @rec_count int = 1 
+0

Не могли бы вы объяснить, что такое spt_values? – Priyanka

+0

@ user3868487 Это системный стол; это не очень важно, я просто использовал его в качестве примера - это может быть любая таблица или все, что вы хотите назначить. – jpw

+0

Почему downvote? В моем ответе есть что-то неправильное? – jpw

0

Для сохранения результата в select заявления в переменные см ниже

DECLARE @rec_count INT 
SELECT @rec_count = 1 

Мы можем получить больше, чем одно значение из оператора выбора, как показано ниже

DECLARE @rec_count INT 
DECLARE @date DATETIME 

SELECT @rec_count = 1, @date = GETDATE() 
0

Если вы пытаетесь получить количество записей, которое выглядит как то, что вы пытаетесь сделать, вы можете сделать это:

declare @rec_count int 
select @rec_count = count(1) from [your_table] -- where some condition is met 

Примечание: Использование count(1) вместо count(*), как это быстрее просто выберите один столбец, чем все при получении счета.

Или, если это число является результатом некоторых вставок/обновлений/выбирает/удаления, вы можете использовать @@ROWCOUNT, что:

Возвращает количество строк, затронутых в последнем заявлении.

Так что, если, например, вы выполняете update или select и хотите знать, сколько строк были затронуты, он автоматически будет храниться SQL Server в @@ROWCOUNT.

declare @rec_count int 

-- some table change 
update your_table 
set col1 = 1 
where col1 = 0 

set @rec_count = @@ROWCOUNT 
-- select @@ROWCOUNT <-- this would return the number of rows updated