SQL Server odpowiednik dla Oracle CURRVAL z podwójnym

głosy
0

Jaki jest cel tych bloku Oracle? Specjalnie słowa kluczowego CURRVALi ROWNUM. Jak przekonwertować je do SQL Server 2012? Proszę pomóż .

CURSOR cursor_1 IS
        SELECT ID.CURRVAL identity FROM dual;

CURSOR cursor_2 IS
        SELECT COUNT(*) Count_total  FROM tbl1
         WHERE ROWNUM = 1;
Utwórz 12/08/2014 o 10:52
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

CURRVAL pobiera bieżącą wartość (bez zwiększania jej) z sekwencji Oracle. (NEXTVAL zwiększa sekwencję i pobiera nową wartość prądu.) Zobacz dokumentację tutaj:

http://docs.oracle.com/database/121/SQLRF/pseudocolumns002.htm#SQLRF00253

Twój cursor_1 jest po prostu pobierania bieżącej wartości sekwencji o nazwie „ID”.

SQL Server wierzę, nie ma sekwencji, ale nie jestem pewien, czy Microsoft może mieć coś podobnego dodane w nowszych wersjach? SQL Server używa kolumny tożsamości i nie sekwencje. Kursor nie może być przekształcony w SQL w znaczący sposób. Trzeba by wiedzieć, co jest celem kursorem? Prawdopodobnie będzie musiała być zastąpiona przez coś jak wybierając wartość kolumny tożsamości nowo wstawionego wiersza (jeśli to dzieje się tylko po włożeniu do tabeli z wyzwalaczem, który używa ID.NEXTVAL na przykład).

-

GDZIE ROWNUM = 1 tylko wybiera jeden „Random” wiersz z TBL1 i liczy się go. Więc count_total będzie 0 lub 1 w zależności od tego, czy wiersze istnieją w TBL1 czy nie. Być może, że można zastąpić SELECT TOP 1, ale nie jestem pewien, czy w TOP COUNT zapytania liczy po TOP zostało przetworzone lub przed szczycie.

Odpowiedział 12/08/2014 o 13:40
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more