451 Stimmen

Wie setzt man eine Variable aus einer SQL-Abfrage?

Ich versuche, eine Variable aus einer SQL-Abfrage zu setzen:

declare @ModelID uniqueidentifer

Select @ModelID = select modelid from models
where areaid = 'South Coast'

Offensichtlich mache ich das nicht richtig, denn es funktioniert nicht. Kann mir jemand eine Lösung vorschlagen?

Danke!

16voto

Venkataraman R Punkte 10760

Es gibt drei Ansätze:

  1. DECLARE
  2. SETZEN -- Microsoft Empfohlener Ansatz
  3. SELECT

In der folgenden Abfrage werden die Vor- und Nachteile der einzelnen Angebote aufgeführt:

-- 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

10voto

Sie können dies verwenden, aber denken Sie daran, dass Ihre Abfrage 1 Ergebnis liefert, bei mehreren Ergebnissen wird die Ausnahme ausgelöst.

declare @ModelID uniqueidentifer
Set @ModelID = (select Top(1) modelid from models where areaid = 'South Coast')

Eine andere Möglichkeit:

Select Top(1)@ModelID = modelid from models where areaid = 'South Coast'

6voto

Mohammad Farahani Punkte 513
Select @ModelID =m.modelid 
From   MODELS m
Where  m.areaid = 'South Coast'

In diesem Fall, wenn Sie zwei oder mehr Ergebnisse zurückerhalten, ist Ihr Ergebnis der letzte Datensatz. Seien Sie sich dessen bewusst, wenn Sie zwei weitere Datensätze zurückerhalten, da Sie möglicherweise nicht das erwartete Ergebnis sehen.

6voto

Venkzz_venki Punkte 69

Um Variablen mit einem SQL-Select zu ASSIGNieren, ist die beste Vorgehensweise wie folgt

->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;

WENN Sie mehr als eine Variable in einer einzigen Zeile zuweisen müssen, können Sie dasselbe SELECT INTO verwenden

->DECLARE val1 int;
->DECLARE val2 int;

->SELECT student__id,student_name INTO val1,val2 FROM student_details;

--HAPPY CODING--

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X