Estou tentando definir uma variável de uma consulta SQL:
declare @ModelID uniqueidentifer
Select @ModelID = select modelid from models
where areaid = 'South Coast'
Obviamente, não estou fazendo isso direito, pois não funciona. Alguém pode sugerir uma solução?
Obrigado!
sql
sql-server
tsql
Mr Cricket
fonte
fonte
Respostas:
Usando SELECT:
Usando SET:
Veja esta pergunta para saber a diferença entre o uso de SELECT e SET no TSQL .
Aviso
Se esta instrução select retornar vários valores (ruim para começar):
SELECT
, é atribuído à variável o último valor retornado (como o womp disse), sem nenhum erro ou aviso (isso pode causar erros de lógica)SET
, ocorrerá um errofonte
Se sua instrução select retornar vários valores, sua variável receberá o último valor retornado.
Para referência sobre o uso de SELECT com variáveis: http://msdn.microsoft.com/en-us/library/aa259186%28SQL.80%29.aspx
fonte
fonte
Prefiro defini-lo a partir da declaração declare
fonte
Use
TOP 1
se a consulta retornar várias linhas.fonte
Você pode usar isso, mas lembre-se de que sua consulta fornece 1 resultado, vários resultados gerarão a exceção.
Outra maneira:
fonte
Nesse caso, se você tiver dois ou mais resultados retornados, seu resultado será o último registro. Portanto, esteja ciente disso se você tiver mais dois registros retornados, pois poderá não ver o resultado esperado.
fonte
Existem três abordagens:
A consulta abaixo detalha as vantagens e desvantagens de cada um:
fonte
Para atribuir variáveis usando um SQL, selecione a melhor prática, conforme mostrado abaixo
Se você precisar atribuir mais de uma variável em uma única linha, poderá usar o mesmo SELECT INTO
fonte