SQL 服务器创建存储过程语法错误

SQL server create stored procedure syntax error

我正在尝试创建一个简单的存储过程:

CREATE PROCEDURE SP_Test @FilePath int
AS
    SELECT
       LastName, FirstName
    INTO 
       tmp_tblPerson
    FROM 
       OPENROWSET('MSDASQL','Driver={Microsoft Access Text Driver (.txt, .csv)}','SELECT * FROM ' + @FilePath + "'")
GO

但是我收到一个我不明白的语法错误..?

Msg 102, Level 15, State 1, Procedure SP_Test, Line 12
Incorrect syntax near '+'.

有什么想法吗?

@filepath 是整数,你可能想要

'SELECT * FROM ' + convert(varchar,@FilePath)

在使用 OPENROWSET 时不能使用动态 SQL。解决方法是使整个块使用动态创建的 SQL,如下所示:

CREATE PROCEDURE SP_Test @FilePath int
AS
    DECLARE @sql NVARCHAR(MAX) = 
        'SELECT LastName, FirstName 
        INTO tmp_tblPerson 
        FROM OPENROWSET(
            ''MSDASQL'',
            ''Driver={Microsoft Access Text Driver (.txt, .csv)}'', 
            ''SELECT * FROM '' + @FilePath)'

    EXEC(@sql)

与动态 SQL 一样,确保您不会受到 SQL 注入攻击。

此外,您的查询似乎不正确,因为我怀疑您的 table 名称是整数。