代码之家  ›  专栏  ›  技术社区  ›  Sukhjeevan

创建存储过程时出错

  •  1
  • Sukhjeevan  · 技术社区  · 14 年前

    任何人都告诉我创建这个存储过程有什么问题。

    CREATE PROC ImportData
    AS
    BEGIN
    
        DECLARE @DatabasePath VARCHAR(MAX)
        SET @DatabasePath = 'E:\ABC.xls'
    
        DECLARE @sql      nvarchar(MAX)
        SET @sql = '
        INSERT INTO [dbo].[Table_1]
        SELECT  *
        FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',
                ''Excel 8.0;Database=' + @DatabasePath + ',
                ''SELECT * FROM [Sheet1$]'') AS xlsTable'
    
        EXEC sp_executesql @sql
        GO
    
    END
    
    ERROR:-
    Incorrect syntax near '@sql'.
    Msg 102, Level 15, State 1, Line 2
    Incorrect syntax near 'END'.
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   Adriaan Stander    14 年前

    从存储过程中移除GO

    有点像

    CREATE PROC ImportData 
    AS 
    BEGIN 
    
        DECLARE @DatabasePath VARCHAR(MAX) 
        SET @DatabasePath = 'E:\ABC.xls' 
    
        DECLARE @sql      nvarchar(MAX) 
        SET @sql = ' 
        INSERT INTO [dbo].[Table_1] 
        SELECT  * 
        FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'', 
                ''Excel 8.0;Database=' + @DatabasePath + ', 
                ''SELECT * FROM [Sheet1$]'') AS xlsTable' 
    
        EXEC sp_executesql @sql 
    
    END
    
        2
  •  1
  •   Phil Hunt    14 年前

    不能有批处理终结符( GO )在存储过程的主体中。