SQL Хранимая процедура Неверный синтаксис рядом с '-' - PullRequest
0 голосов
/ 11 марта 2020

При выполнении моей хранимой процедуры в Microsoft SQL Server Management Studio я получил ошибку при обновлении поля DATETIME2: неправильный синтаксис рядом с '-'.

При вставке с сохраненным процессом в ту же таблицу, все работает. Что я делаю не так?

Большое спасибо!

Исключая хранимую процедуру:

USE [DataAccountancyDB]
GO

DECLARE @return_value int,
        @Id int

SELECT  @Id = 3

EXEC    @return_value = [dbo].[spJournalPurchaseEntry_Update]
        @Id = @Id OUTPUT,
        @JournalPurchaseId = 1,
        @Date = 2019-12-30,
        @DocumentNumber = 2020007,
        @AccountingYearId = 3,
        @AccountingPeriodId = 2,
        @VATPeriodId = 1,
        @Comment = N'Test',
        @SupplierId = 1,
        @InvoiceAmount = 1000

SELECT  @Id as N'@Id'

SELECT  'Return Value' = @return_value

GO

Я получил следующую ошибку:

Msg 102, Level 15, State 1, Line 12
Incorrect syntax near '-'.

Строка 12 :

@Date = 2019-12-30

.

К вашему сведению Моя таблица

CREATE TABLE [dbo].[JournalPurchaseEntry]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY, 
    [JournalPurchaseId] INT NOT NULL, 
    [Date] DATETIME2 NOT NULL, 
    [DocumentNumber] INT NOT NULL, 
    [AccountingYearId] INT NOT NULL, 
    [AccountingPeriodId] INT NOT NULL, 
    [VATPeriodId] INT NOT NULL, 
    [Comment] NVARCHAR(250) NULL, 
    [SupplierId] INT NULL, 
    [InvoiceAmount] MONEY NULL, 
    CONSTRAINT [FK_JournalPurchaseEntry_ToJournalPurchase] FOREIGN KEY ([JournalPurchaseId]) REFERENCES [JournalPurchase]([Id]),
    CONSTRAINT [FK_JournalPurchaseEntry_ToAccountingYear] FOREIGN KEY ([AccountingYearId]) REFERENCES [AccountingYear]([Id]),
    CONSTRAINT [FK_JournalPurchaseEntry_ToAccountingPeriod] FOREIGN KEY ([AccountingPeriodId]) REFERENCES [AccountingPeriod]([Id]),
    CONSTRAINT [FK_JournalPurchaseEntry_ToVATPeriod] FOREIGN KEY ([VATPeriodId]) REFERENCES [VATPeriod]([Id]),
    CONSTRAINT [FK_JournalPurchaseEntry_ToClient] FOREIGN KEY ([SupplierId]) REFERENCES [Supplier]([Id])
)

Моя хранимая процедура

CREATE PROCEDURE [dbo].[spJournalPurchaseEntry_Update]
    @Id INT OUTPUT,
    @JournalPurchaseId INT, 
    @Date DATETIME2, 
    @DocumentNumber INT, 
    @AccountingYearId INT, 
    @AccountingPeriodId INT, 
    @VATPeriodId INT, 
    @Comment NVARCHAR(250), 
    @SupplierId INT, 
    @InvoiceAmount MONEY
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE dbo.JournalPurchaseEntry 
    SET
        JournalPurchaseId = @JournalPurchaseId, 
        [Date] = @Date, 
        DocumentNumber = @DocumentNumber, 
        AccountingYearId = @AccountingYearId, 
        AccountingPeriodId = @AccountingPeriodId, 
        VATPeriodId = @VATPeriodId, 
        Comment = @Comment, 
        SupplierId = @SupplierId, 
        InvoiceAmount = @InvoiceAmount

    WHERE [Id] = @Id;
END

1 Ответ

4 голосов
/ 11 марта 2020

Вам нужно будет передать параметр в кавычках

@ Date = '2019-12-30'

...