Как объявить локальную переменную и присвоить ей значение первой строки искушаемого? (SQL SERVER) - PullRequest
0 голосов
/ 04 июля 2019

У меня есть процедура на сервере SQL, в этой процедуре у меня есть temp_table, которая содержит только одну строку, и я хотел бы объявить локальную переменную в этой процедуре и дать ей значение в temp_table:

Предположим, у моей temp_table есть одна строка и 2 столбца:

Переменная Variable2

"hello_world" 3

Я пытался Declare @variable varchar(50) = #temp_table.variable

, но неудивительно, что это не такработает.

Я бы хотел, чтобы эта строка кода поместила значение "hello_world" в локальную переменную @ variable.

Знаете ли вы, как это сделать без использования подзапроса, выберите top 1, еслиэто возможно?

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Если в вашей таблице только одна строка, вы можете использовать:

  Declare @variable varchar(50)

    SELECT  @variable = variable from #temp_table

Но если в вашей таблице несколько строк, вам также нужно использовать порядок по порядку и получить первое значение

SELECT TOP 1 @variable = variable from #temp_table order by col -- col is the column for which you want the top value
0 голосов
/ 04 июля 2019

Примерно так:

DECLARE @variable VARCHAR(50) = (SELECT variable FROM #temp_table);

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

Сообщение 512, уровень 16, состояние 1, строка 1 Подзапрос возвратил более 1 значения.Это недопустимо, когда подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.

И это, возможно, именно то, что вы хотите.Использование TOP(1) без ORDER BY или отдельного SELECT @variable = variable ... приведет к выбору одного произвольного значения из таблицы - это может быть безвредным, или, опять же, это может быть действительно трудно отладить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...