반응형
SQL 쿼리에서 변수를 설정하는 방법
SQL 쿼리에서 변수를 설정하려고 합니다.
declare @ModelID uniqueidentifer
Select @ModelID = select modelid from models
where areaid = 'South Coast'
확실히 나는 이것을 제대로 하고 있지 않다. 왜냐하면 그것은 효과가 없기 때문이다.누가 해결책을 제안해 줄 수 있나요?
감사합니다!
사용.SELECT
SELECT @ModelID = m.modelid
FROM MODELS m
WHERE m.areaid = 'South Coast'
사용.SET
SET @ModelID = (SELECT m.modelid
FROM MODELS m
WHERE m.areaid = 'South Coast');
그럼, 을 사용할 수 있습니다.SELECT
가치를 나타내다@ModelID
변수를 코드에 사용할 수도 있습니다.
SELECT @ModelID
TSQL에서 SELECT와 SET를 사용하는 경우의 차이는 이 질문을 참조하십시오.
경고
이 경우SELECT
문이 여러 값을 반환합니다(처음에는 잘못됨).
- 사용시
SELECT
이 변수에는 에러나 경고 없이 마지막으로 반환된 값이 할당됩니다(womp가 말한 바와 같이).이로 인해 로직 버그가 발생할 수 있습니다). - 그
SET
쿼리 끝에 세미콜론을 넣지 않은 경우에만 쿼리가 오류를 반환합니다.
SELECT @ModelID = modelid
FROM Models
WHERE areaid = 'South Coast'
select 문에 여러 값이 반환되면 마지막으로 반환된 값이 변수에 할당됩니다.
변수와 함께 SELECT를 사용하는 방법에 대한 자세한 내용은http://http://msdn.microsoft.com/en-us/library/aa259186%28SQL.80%29.aspx 를 참조해 주세요.
declare @ModelID uniqueidentifer
--make sure to use brackets
set @ModelID = (select modelid from models
where areaid = 'South Coast')
select @ModelID
신고서에서 설정하기만 하면 됩니다.
DECLARE @ModelID uniqueidentifer = (SELECT modelid
FROM models
WHERE areaid = 'South Coast')
사용하다TOP 1
쿼리가 여러 행을 반환하는 경우.
SELECT TOP 1 @ModelID = m.modelid
FROM MODELS m
WHERE m.areaid = 'South Coast'
다음 3가지 접근법이 있습니다.
아래 쿼리에서는 각각의 장점과 단점을 자세히 설명합니다.
-- First way,
DECLARE @test int = (SELECT 1)
, @test2 int = (SELECT a from (values (1),(2)) t(a)) -- throws error
-- advantage: declare and set in the same place
-- Disadvantage: can be used only during declaration. cannot be used later
-- Second way
DECLARE @test int
, @test2 int
SET @test = (select 1)
SET @test2 = (SELECT a from (values (1),(2)) t(a)) -- throws error
-- Advantage: ANSI standard.
-- Disadvantage: cannot set more than one variable at a time
-- Third way
DECLARE @test int, @test2 int
SELECT @test = (select 1)
,@test2 = (SELECT a from (values (1),(2)) t(a)) -- throws error
-- Advantage: Can set more than one variable at a time
-- Disadvantage: Not ANSI standard
이를 사용할 수 있지만 쿼리는 1개의 결과를 제공하므로 여러 개의 결과에서 예외가 발생합니다.
declare @ModelID uniqueidentifer
Set @ModelID = (select Top(1) modelid from models where areaid = 'South Coast')
다른 방법:
Select Top(1)@ModelID = modelid from models where areaid = 'South Coast'
Select @ModelID =m.modelid
From MODELS m
Where m.areaid = 'South Coast'
이 경우 반환된 결과가 두 개 이상이면 결과가 마지막 레코드가 됩니다.따라서 예상한 결과가 표시되지 않을 수 있으므로 2개의 레코드가 더 반환될 수 있는 경우에는 이 점에 유의하십시오.
SQL을 사용하여 변수를 할당하려면 다음과 같은 베스트 프랙티스를 선택합니다.
->DECLARE co_id INT ;
->DECLARE sname VARCHAR(10) ;
->SELECT course_id INTO co_id FROM course_details ;
->SELECT student_name INTO sname FROM course_details;
한 줄에 두 개 이상의 변수를 할당해야 하는 경우 동일한 SELECT INTO를 사용할 수 있습니다.
->DECLARE val1 int;
->DECLARE val2 int;
->SELECT student__id,student_name INTO val1,val2 FROM student_details;
--HAPPY CODING--
언급URL : https://stackoverflow.com/questions/3974683/how-to-set-variable-from-a-sql-query
반응형
'code' 카테고리의 다른 글
CSS를 사용하여 요소 배경의 불투명도를 낮추려면 어떻게 해야 합니까? (0) | 2023.04.08 |
---|---|
사용자가 DIV 바깥쪽을 클릭할 때 jQuery를 사용하여 DIV 숨기기 (0) | 2023.04.08 |
플렉스 아이템을 오른쪽 정렬하는 방법 (0) | 2023.04.08 |
SQL Developer에서 SQL Server 스토어드 프로시저를 실행하는 방법 (0) | 2023.04.08 |
Array.Add vs += (0) | 2023.04.08 |