Sql-Server
創建儲存過程以將 Excel 文件插入表時收到錯誤
我想知道您能否告訴我我的查詢有什麼問題?
參數
@TableName
是輸入參數。為什麼我必須再次聲明?
CREATE PROCEDURE [dbo].[OpenExcel] @FileName nvarchar(2000), @TableName varchar(2000) AS BEGIN DECLARE @Provider nvarchar(2000) SET @Provider = 'Microsoft.ACE.OLEDB.12.0' DECLARE @etValue nvarchar(4000) SET @RetValue = 'select * from openrowset(''' + @Provider + ''',''Excel 8.0;Database=' + @FileName + ';hdr=no' + ''', ''select " from [Sheet1$]'' )' DELETE FROM @TableName INSERT INTO @TableName EXEC(@RetValue) END
我收到的錯誤資訊是:
消息 1087,級別 16,狀態 1,過程 OpenExcel,第 26 行
必須聲明表變數“@TableName”。
好吧,我正在嘗試將 Excel 路徑 (
@FileName
) 和表名 (@TableName
; 應插入數據的位置) 傳遞給儲存過程。我怎樣才能做到這一點?
我有不同結構的不同表。請幫我解決這個問題。
這是您的解決方案:
Create Procedure [dbo].[OpenExcel] @FileName nvarchar(2000), @TableName varchar(2000) AS Begin declare @Provider nvarchar(2000); set @Provider = 'Microsoft.ACE.OLEDB.12.0'; declare @RetValue nvarchar(4000) ; set @RetValue='select * from openrowset("' + @Provider + ''',''Excel 8.0;Database=' + @FileName +';hdr=no'+''', ''select * from [Sheet1$]" )' declare @Bufr nvarchar(4000) set @Bufr='delete from '+@TableName+';' set @Bufr=@Bufr+'insert into '+@TableName exec(@RetValue) End