SQL Server: неверный синтаксис рядом с Tablockx. Ожидая '(' или Выбрать - PullRequest
0 голосов
/ 05 ноября 2018
CREATE PROCEDURE [lot].[wipeAll] 
    @num VARCHAR(16),
    @quotaType INT,
    @TableName NVARCHAR(128)
AS
BEGIN
    SET NOCOUNT ON;

    DELETE FROM @TableName WITH (TABLOCKX) 
    WHERE num = @num AND quotaType = @quotaType;
END

Я не могу понять, как обойти эту ошибку, которую я получаю

Неверный синтаксис рядом с Tablockx. Ожидая '(' или выберите

из приведенного выше фрагмента кода. Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 05 ноября 2018

Для этого нужно использовать динамический SQL:

BEGIN
    SET NOCOUNT ON;

    DECLARE @sql NVARCHAR(MAX);

    SET @sql = '
DELETE FROM @TableName WITH (TABLOCKX) WHERE num=@num AND quotaType=@quotaType)';

    SET @sql = REPLACE(@sql, '@TableName', @TableName);

    EXEC sp_executesql @sql,
         '@num varchar(16), @quotaType int',
         @num=@num, @quotaType=quotaType
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...