mssql- Incorrect syntax near 'GO'

mssql- Incorrect syntax near 'GO'
MI
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 7 lat
  • Postów:5
0

Witam, pisząc procedury natrafiłem na problemy z instrukcją "GO", których nie rozumiem. W kodzie źródłowym zaznaczyłem ich miejsca, będę wdzięczny za pomoc.

Kopiuj
--32.1 DROP PROCEDURE wypisz_samochody;
CREATE PROCEDURE wypisz_samochody @marka VARCHAR(20)
AS
SELECT * FROM samochod WHERE marka=@marka;
GO --nie ma problemu
EXECUTE wypisz_samochody 'opel'; 
GO --błąd

--32.2 DROP PROCEDURE zwieksz_pensje;
CREATE PROCEDURE zwieksz_pensje @id INT, @kwota DECIMAL
AS
UPDATE pracownik SET pensja=pensja+@kwota WHERE id_pracownik=@id;
GO --błąd
EXECUTE zwieksz_pensje 1, 1000;
SELECT * FROM pracownik WHERE id_pracownik=1;
--UPDATE pracownik SET pensja=1000 WHERE id_pracownik=1;
GO --błąd
PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:23 minuty
  • Postów:3876
1

W czym to puszczasz? Ja tu nie widzę żadnego błędu...

abrakadaber
abrakadaber
błąd jest o ile to jest CAŁY kod - po pierwszym CREATE PROCEDURE nie ma END i nie wiadomo gdzie to się kończy a samo GO nie może być w ciele SP
MI
W Microsoft SQL Server Management Studio
PA
@abrakadaber: end jest opcjonalne, procedura zostanie utworzona, a następnie puszczona, skrypt jest jak najbardziej poprawny
PA
@Micherman: nie dajesz całego skryptu bo skrypt jest poprawny....
abrakadaber
abrakadaber
@Panczo myślałem, że chociaż MS będzie się jakichś standardów trzymał a tu taki surprise...
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:8 miesięcy
  • Postów:6610
2

GO to nie część T_SQLa tylko komenda, którą rozpoznają programy: SSMS, sqlcmd i osql. Jako taka nie jest rozpoznawana jako przez samego SQL Servera i nie może być użyta w stored proc.

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/sql-server-utilities-statements-go


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
edytowany 1x, ostatnio: abrakadaber
MI
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 7 lat
  • Postów:5
0

Nie zrobiłem kompletnie nic (no oprócz ponownego uruchomienia Management Studio, chociaż nie wiem jak to miałoby pomóc) i nagle wszystko działa bez żadnych błędów. Dzięki za pomoc @Panczo i @abrakadaber

Haskell
  • Rejestracja:prawie 10 lat
  • Ostatnio:12 miesięcy
  • Postów:4700
1

SSMS czasem tak ma, że podkreśla kod na czerwono pomimo tego, że nie ma błędu. Wynika to z tego, że czasami edytor nie rozumie kontekstu, np. nie ma wiedzy, że w wyniku działania tego kodu pojawi się jakaś procedura i kolejne linijki kodu wykonane po sobie będą działać.


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.