[SQL] Incorrect syntax near '('. na SQL Server 2008

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:

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?

dwie rzeczy przychodzą mi do głowy

  1. nie potrzebna spacja pomiędzy nazwą typu a wartością

czyli powinno być varchar(30).

  1. 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. :stuck_out_tongue:

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.