Kod procedury:
CREATE PROCEDURE dodaj_piwo
@producent_id int,
@nazwa varchar (30),
@dodano datetime = getdate()
AS
BEGIN
INSERT INTO piwa (producent_id, nazwa)
VALUES (@producent_id, @nazwa)
RETURN @@ERROR
END
go
EXECUTE dodaj_piwo 1, 'Harnaś Mocny'
EXEC dodaj_piwo 1, 'Karpackie Mocne'
go
Błąd:
Msg 102, Level 15, State 1, Procedure dodaj_piwo, Line 4 Incorrect syntax near ‘(’.
Wygląd tabeli:
CREATE TABLE [dbo].[piwa](
[id] [int] IDENTITY(1,1) NOT NULL,
[producent_id] [int] NOT NULL,
[nazwa] [varchar](30) NULL,
[dodano] [datetime] NULL,
Co robię źle?
grzelix
(Grzelix)
26 Maj 2012 07:31
#2
dwie rzeczy przychodzą mi do głowy
nie potrzebna spacja pomiędzy nazwą typu a wartością
czyli powinno być varchar(30).
Pierwszy raz spotykam się aby nazwy typów były objęte klamrami.
Jeśli już tak można to pewnie powinno to wyglądać tak [varchar(30], gdyż to jest pełna nazwa typu.
Nie mam możliwości przetestowania tego, dlatego mówię że jest to sugestia (nie rozwiązanie).
To nie ma żadnego wpływu.
To kod wygenerowany przez SQL Server, ma na celu pokazać tylko strukturę tabeli.
grzelix
(Grzelix)
26 Maj 2012 16:49
#4
Troszkę się zgubiłem w twoim pierwszym poście, teraz już widzę o co chodzi. Wygląda na to że ustawienie obecnej daty jako parametru opcjonalnego jest problematyczne:
http://social.msdn.microsoft.com/forums … 7651723fa5
http://social.msdn.microsoft.com/Forums … 981a3f478f
z drugiej zaś strony nie wykorzystujesz tej zmiennej nigdzie dalej. Nie wiem czy to dlatego że podałeś tylko wycinek procedury, bo jeśli nie to po prostu usuń ten parametr.