2017-07-13 36 views
5

Trwa konserwacja starego raportu utworzonego przez kogoś dawno temu. Zauważyłem, że źródłem danych dla raportu jest procedura składowana. Wywołanie sproc wygląda następująco:"; 1" po wywołaniu procedury składowanej w MS SQL?

EXEC someStoredProc;1 

Nigdy wcześniej nie widziałem "; 1". Ciekawe, co to jest? Nie można znaleźć żadnej dokumentacji online. Jeśli zmienię wartość "1" na dowolną inną, SQL zgłasza błąd "nie można znaleźć procedury przechowywanej" someStoredProc "". Ale przełącz z powrotem na "1" i to działa. Wygląda na to, że nie ma żadnego wpływu na wynik. Co to za rzecz?

Zauważyłem, że mogę umieścić "; 1" po każdej przechowywanej procedurze i wykonuje się pozornie tak samo bez niej.

Jeśli ktoś może wyjaśnić mi tę tajemnicę - dziękuję!

Odpowiedz

5

Są one znane jako Numbered Procedures, które zostały deprecated since 2005 (ale wciąż nieco obsługiwane przez SQL Server 2012)

W SQL Server, można tworzyć różne wersje procedury przechowywanej z ;# przyrostka. Zasadniczo można ich użyć do przeciążenia procedury składowanej, utworzenia innej wersji, która akceptuje inną liczbę parametrów lub zachowuje się inaczej, itp.