Udostępnij za pośrednictwem


SET @local_variable (Transact-SQL)

Ustawia określony zmiennej lokalnej, poprzednio utworzone przy użyciu DECLARE @local\_variable Instrukcja określona wartość.

Topic link iconKonwencje składni języka Transact-SQL

SET 
{ @local_variable
    [ . { property_name | field_name } ] = { expression | udt_name { . | :: } method_name }
}
|
{ @SQLCLR_local_variable.mutator_method
}
|
{ @local_variable
    {+= | -= | *= | /= | %= | &= | ^= | |= } expression
}
| 
  { @cursor_variable = 
    { @cursor_variable | cursor_name 
    | { CURSOR [ FORWARD_ONLY | SCROLL ] 
        [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] 
        [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] 
        [ TYPE_WARNING ] 
    FOR select_statement 
        [ FOR { READ ONLY | UPDATE [ OF column_name [ ,...n ] ] } ] 
      } 
    }
} 

Argumenty

  • @local_variable
    Jest nazwą zmiennej dowolnego typu z wyjątkiem cursor, text, ntext, image, lub table. Nazwy zmiennych musi zaczynać się po znaku)
    @
    ).Nazwy zmiennych muszą być zgodne z zasadami identyfikatory.

  • property_name
    Jest to właściwość typ zdefiniowany przez użytkownika.

  • field_name
    Jest to publicznych pole Typ zdefiniowany przez użytkownika.

  • udt_name
    To nazwa języka (CLR) w czasie wykonywania przez użytkownika typu wspólnego.

  • { . | :: }
    Określa metoda CLR użytkownika — definiowanie typu.metoda instancji (niestatyczny) należy użyć (okresu**.** ).metoda statyczne za pomocą dwoma dwukropkami)::).Aby wywołać metoda, właściwość lub pole zdefiniowany przez użytkownika typ danych CLR, musisz mieć uprawnienie wykonać typu.

  • method_name**(**argument [ ,... n ] )
    Jest to metoda pobiera jeden lub więcej argumentów do modyfikowania stanu wystąpienie typu typ zdefiniowany przez użytkownika.Metody statyczne muszą być publiczne.

  • **@**SQLCLR_local_variable
    Jest zmienną, którego typ znajduje się w wirtualny plik dziennika.Aby uzyskać więcej informacji zobaczPojęcia dotyczące programowania wspólne integracja Runtime (CLR) języka.

  • mutator_method
    Jest to metoda w zestawie, które mogą być zmieniane stanu obiektu.SQLMethodAttribute.IsMutator zostaną zastosowane do tej metoda.

  • { += | -= | *= | /= | %= | &= | ^= | |= }
    Operator przypisania złożonego:

    += Dodawanie i przypisywanie

    -= odejmować i przypisać

    * = Należy pomnożyć i przypisać

    / = Dzielenie i przypisywanie

    % = Modulo i przypisać

    &= I bitowe i przypisywanie

    ^ = Bitowe XOR i przypisać

    | = OR bitowe i przypisywanie

  • expression
    Jest ważne w każdym wyrażenie.

  • cursor_variable
    Jest nazwą zmiennej kursor.To odwołanie do poprzedniego poprzednio miejsce docelowe zmiennej kursora odwołuje się do różnych kursor, zostanie usunięta.

  • cursor_name
    To nazwa kursor, zgłaszane przy użyciu instrukcja DECLARE kursor.

  • KURSOR
    Określa, że instrukcja zestaw zawiera deklaracja kursor.

  • PRZEWIJANIA
    Określa, że kursor obsługuje wszystkie opcje pobierania: Po pierwsze OSTATNI, NEXT, przed WZGLĘDNE i BEZWZGLĘDNE. Nie można określić SCROLL, gdy określono też FAST_FORWARD.

  • FORWARD_ONLY
    Określa, że kursor obsługuje tylko pobrania NASTĘPNEJ opcji.Kursor mogą być pobierane tylko w jednym kierunku od pierwszego do ostatniego wiersza.Po określeniu FORWARD_ONLY bez STATYCZNE, zestaw KLUCZY lub słowa kluczowe DYNAMIC kursor jest zaimplementowany jako DYNAMIC.Po określeniu FORWARD_ONLY ani SCROLL FORWARD_ONLY jest ustawieniem domyślnym, o ile nie określono słowa kluczowe STATYCZNE, zestaw KLUCZY lub dynamiczne.STATYCZNE, zestaw KLUCZY i kursorów DYNAMIC SCROLL jest ustawieniem domyślnym.

    Uwaga

    W SQL Server 2000Opcje kursor FAST_FORWARD i FORWARD_ONLY wzajemnie się wykluczają. Jeśli zostanie określony, nie może być drugiej i powstaje błąd.Oba słowa kluczowe mogą być używane w tej samej instrukcja DECLARE kursor.

  • STATYCZNE
    Definiuje kursora, która zostanie utworzona tymczasowa kopia danych, które mają być używane przez kursor.Wszystkie żądania do kursor są odbierane z tej tabela tymczasowa tempdb; dlatego zmiany dokonane na podstawie tabel nie są odzwierciedlane w danych zwróconych przez pobiera dokonać tego kursor i tego kursor nie zezwala na zmiany.

  • ZESTAW KLUCZY
    Określa, że członkostwa i kolejność wierszy w kursor są rozwiązywane przy otwieraniu kursor.The set of keys that uniquely identify the rows is built into the keysettable in tempdb.Zmiany wartości nonkey w podstawowych tabelach dokonanych przez innych użytkowników, albo przez właściciela kursora są widoczne jako właściciel kursor zostanie przewinięty wokół kursora.Wstawia wprowadzonych przez innych użytkowników nie są widoczne, a następnie wstawia nie może być dokonane za pomocą Transact-SQL kursor serwera.

    Jeśli wiersz zostanie usunięty, próba pobrania wiersza zwraca FETCH_STATUS @@ od -2.Aktualizacje wartości klucz z zewnątrz kursor są podobne do usuwania starych wiersza następuje wstawienie nowego wiersza.Wiersz o nowe wartości nie jest widoczny i podejmuje próbę pobrania wierszy z stare wartości zwracanej FETCH_STATUS @@ od -2.Nowe wartości są widoczne, jeśli aktualizacja jest wykonywana przez kursor przez określenie klauzula WHERE CURRENT OF.

  • DYNAMICZNE
    Definiuje kursor, który odzwierciedla wszystkie zmiany danych wprowadzone w wierszach w jej wyniku ustawiony jako Przewija właściciela kursor wokół kursor.Można zmienić wartości danych, zamówienia i członkostwo w wierszach na każdego pobrania.Dynamiczne kursory nie są obsługiwane opcje pobierania względne i bezwzględne.

  • FAST_FORWARD
    Określa FORWARD_ONLY, kursor TYLKO_DO_ODCZYTU z optymalizacje włączone.Nie można określić FAST_FORWARD, gdy określono też SCROLL.

    Uwaga

    W SQL Server 2000Opcje kursor FAST_FORWARD i FORWARD_ONLY wzajemnie się wykluczają. Jeśli zostanie określony, nie może być drugiej i powstaje błąd.Oba słowa kluczowe mogą być używane w tej samej instrukcja DECLARE kursor.

  • READ_ONLY
    Zapobiega aktualizacji dokonywana przy użyciu tego kursor.Kursor nie może odwoływać się w klauzula WHERE CURRENT OF w instrukcja UPDATE lub DELETE.Ta opcja zastępuje możliwości domyślny kursor do aktualizacji.

  • BLOKADY PRZEWIJANIA
    Specifies that positioned updates or deletes made through the cursor are guaranteed to succeed.SQL Server locks the rows as they are read into the cursor to guarantee their availability for later modifications.Nie można określić SCROLL_LOCKS, gdy określono też FAST_FORWARD.

  • OPTYMISTYCZNY
    Specifies that positioned updates or deletes made through the cursor do not succeed if the row has been updated since it was read into the cursor.SQL Server does not lock rows as they are read into the cursor.Zamiast tego używa porównania wartości kolumna sygnatury czasowej lub wartość suma kontrolna, gdy tabela zawiera nie kolumna sygnatury czasowej, aby określić, czy wiersz był modyfikowany po odczytu do kursor.Jeśli wiersz został zmodyfikowany, próby rozmieszczone zaktualizowane lub usunięte nie powiedzie się.Nie można określić OPTIMISTIC, gdy określono też FAST_FORWARD.

  • TYPE_WARNING
    Określa, że komunikat ostrzegawczy jest wysyłane do klient, gdy kursor jest niejawnie konwertowane na żądany typ inny.

  • Maksymalna liczba odczytów fizyczne to procedura przechowywana kiedykolwiek wykonał podczas wykonywania pojedynczych.select_statement
    Jest standardowym instrukcja SELECT, który definiuje zestaw wyników kursor.Słowa kluczowe COMPUTE, COMPUTE BY, FOR BROWSE i na nie są dozwolone w obrębie select_statement deklaracja kursor.

    Jeśli DISTINCT, UNION, GROUP BY lub HAVING są używane, lub wyrażenie agregacja jest uwzględniona w select_list, kursor zostanie utworzony jako STATIC.

    Jeśli każda z tabel podstawowych nie ma indeks unikatowy i kursor ISO SCROLL lub jego Transact-SQL Wymagana jest kursora zestawu KLUCZY, zostanie automatycznie kursor statyczny.

    Jeśli select_statement zawiera klauzulę ORDER BY, w której kolumny nie są wiersza unikatowe identyfikatory, DYNAMIC kursor jest konwertowany kursora zestawu KLUCZY lub kursor statyczny, jeśli nie można otworzyć kursora zestawu KLUCZY. Ta operacja jest również wykonywana dla kursor zdefiniowane przy użyciu składni ISO, ale bez słowa kluczowego STATIC.

  • W TRYBIE TYLKO DO ODCZYTU
    Zapobiega aktualizacji dokonywana przy użyciu tego kursor.Kursor nie może odwoływać się w klauzula WHERE CURRENT OF w instrukcja UPDATE lub DELETE.Ta opcja zastępuje możliwości domyślny kursor do aktualizacji.To słowo kluczowe zależy od wcześniejszych TYLKO_DO_ODCZYTU mających miejsce zamiast znaku podkreślenia między odczytu i tylko.

  • UPDATE [OF column_name[ ,... n ] ]
    Definiuje kolumn można aktualizować kursor.If OF column_name [,...n] is supplied, only the columns listed will allow modifications.Jeżeli lista nie jest podany, wszystkie kolumny mogą być aktualizowane, chyba że kursor został zdefiniowany jako TYLKO_DO_ODCZYTU.

Remarks

Po zadeklarowana jest zmienna, jest ustawiana na wartość NULL.Aby przypisać wartość, która nie może mieć wartości NULL do zmiennej zadeklarowanej za pomocą instrukcja zestaw.Instrukcja zestaw, który przypisuje wartość do zmiennej zwraca jedną wartość.Podczas inicjowania wielu zmiennych, należy użyć oddzielną instrukcję zestaw dla każdej zmiennej lokalnej.

Zmienne mogą być używane tylko w wyrażeniach nie zamiast nazwy obiektu lub słowa kluczowe.Do konstruowania dynamicznych Transact-SQL za pomocą instrukcji wykonać.

Reguły składni zestaw **@**cursor_variable nie należy umieszczać słowa kluczowe LOCAL i GLOBAL.When the SET **@**cursor_variable = CURSOR...syntax is used, the cursor is created as GLOBAL or LOCAL, depending on the setting of the default to local cursor database option.

Kursor zmienne są zawsze lokalnego, nawet wtedy, gdy odwołują globalne kursora.Gdy kursor globalne odwołuje się do zmiennej kursora, kursor ma globalnym i odwołanie kursora lokalnego.Aby uzyskać więcej informacji zobacz przykład C.

Aby uzyskać więcej informacji zobaczDECLARE CURSOR (Transact-SQL).

Operator przypisania złożonych można używać wszędzie mają przydziału na wyrażenie na prawej stronie operatora, włączając zmienne i zestaw za pomocą instrukcja UPDATE, SELECT i przyjęcie.

Uprawnienia

Wymaga członkostwo w roli publicznej.Wszyscy użytkownicy mogą używać zestaw **@**local_variable.

Przykłady

A.Drukowanie wartości zmiennej zainicjowane za pomocą zestaw

Poniższy przykład tworzy @myvar Zmienna, powoduje umieszczenie ciąg znaków w zmiennej i wartości @myvar Zmienna.

DECLARE @myvar char(20);
SET @myvar = 'This is a test';
SELECT @myvar;
GO

B.Za pomocą zmiennej lokalnej przypisane wartości za pomocą zestaw w instrukcja SELECT

Poniższy przykład tworzy zmienna lokalna o nazwie @state i używa tej zmiennej lokalnej w SELECT Instrukcja imienia i nazwiska wszystkich pracowników, którzy znajdują się w stanie znaleźć Oregon.

USE AdventureWorks;
GO
DECLARE @state char(25);
SET @state = N'Oregon';
SELECT RTRIM(FirstName) + ' ' + RTRIM(LastName) AS Name, City
FROM HumanResources.vEmployee
WHERE StateProvinceName = @state;

C.Za pomocą złożonych przydziału dla zmiennej lokalnej

Dwa poniższe przykłady daje ten sam wynik.Mogą one tworzyć zmienna lokalna o nazwie @NewBalance, mnożona przez 10 i wyświetla nową wartość zmiennej lokalnej w SELECT Instrukcja. W drugim przykładzie użyto operator przydział złożony.

/* Example one */
DECLARE  @NewBalance  int ;
SET  @NewBalance  =  10;
SET  @NewBalance  =  @NewBalance  *  10;
SELECT  @NewBalance;

/* Example Two */
DECLARE @NewBalance int = 10;
SET @NewBalance *= 10;
SELECT @NewBalance;

D.zestaw przy użyciu kursor globalne

W poniższym przykładzie tworzy zmienną lokalną, a następnie ustawia zmienną kursor do nazwy globalne kursora.

DECLARE my_cursor CURSOR GLOBAL 
FOR SELECT * FROM Purchasing.ShipMethod
DECLARE @my_variable CURSOR ;
SET @my_variable = my_cursor ; 
--There is a GLOBAL cursor declared(my_cursor) and a LOCAL variable
--(@my_variable) set to the my_cursor cursor.
DEALLOCATE my_cursor; 
--There is now only a LOCAL variable reference
--(@my_variable) to the my_cursor cursor.

E.Definiowanie kursor za pomocą zestaw

W poniższym przykładzie użyto SET Instrukcja do definiowania kursor.

DECLARE @CursorVar CURSOR;

SET @CursorVar = CURSOR SCROLL DYNAMIC
FOR
SELECT LastName, FirstName
FROM AdventureWorks.HumanResources.vEmployee
WHERE LastName like 'B%';

OPEN @CursorVar;

FETCH NEXT FROM @CursorVar;
WHILE @@FETCH_STATUS = 0
BEGIN
    FETCH NEXT FROM @CursorVar
END;

CLOSE @CursorVar;
DEALLOCATE @CursorVar;

F.Przypisywanie wartości z kwerendy

W poniższym przykładzie użyto kwerendy, aby przypisać wartość do zmiennej.

USE AdventureWorks;
GO
DECLARE @rows int;
SET @rows = (SELECT COUNT(*) FROM Sales.Customer);
SELECT @rows;

G.Przypisywanie wartości do zmiennej typ zdefiniowany przez użytkownika, modyfikując właściwość typu

W poniższym przykładzie ustawiono wartość dla typ zdefiniowany przez użytkownika Point zmieniając wartość właściwość X tego typu.

DECLARE @p Point;
SET @p.X = @p.X + 1.1;
SELECT @p;
GO

H.Przypisywanie wartości do zmiennej typ zdefiniowany przez użytkownika, wywołując metoda typu

W poniższym przykładzie ustawiono wartość dla typ zdefiniowany przez użytkownika punkt wywołując metoda SetXY tego typu.

DECLARE @p Point;
SET @p=point.SetXY(23.5, 23.5);

I.Tworzenie zmiennej typu CLR i wywołania metoda mutator

Poniższy przykład tworzy zmienną typu Point, a następnie wykonuje metoda mutator w Point.

CREATE ASSEMBLY mytest from 'c:\test.dll' WITH PERMISSION_SET = SAFE
CREATE TYPE Point EXTERNAL NAME mytest.Point
GO
DECLARE @p Point = CONVERT(Point, '')
SET @p.SetXY(22, 23);

Historia zmian

Microsoft Learning

Dodaje @SQLCLR_local_variable.mutator_method sekcji Składnia i opisy zmiennych sekcji argumenty.

Przykład dodanych I.