我有一堆CSV文件要導入,所以我已經用XML創建了BCPFORMAT文件。這些都運行良好,我可以正確導入數據。使用變量SQL Server SP'語法錯誤'錯誤
現在我試圖創建一個接受三個參數的存儲過程(這是我從來沒有做過):
1.表名
2到CSV文件的路徑
3.路徑BCPFORMAT文件
CREATE PROC dbo.usp_import_csv
@table_name nvarchar(100), /* name of table to import into */
@csv_path nvarchar(1000), /* path to csv file */
@bcp_format_path nvarchar(1000) /* path to BCPFORMAT file */
AS
BEGIN
DELETE FROM @table_name
BULK INSERT @table_name
FROM @csv_path
WITH (FIRSTROW = 1 , FORMATFILE = @bcp_format_path)
END
EXEC dbo.usp_import_cttp 'dbo.new_table', 'C:\temp\new_table.csv', 'C:\Temp\new_table.xml'
我得到的消息Incorrect syntax near '@table_name'.
所以我顯然不能這樣做很正確的東西。但我無法弄清楚,是什麼...
應答所得出從下面
CREATE PROC dbo.usp_import_cttp
@table_name nvarchar(100), /* table to import into */
@csv_path nvarchar(1000), /* folder containing latest NZULM data files */
@bcp_format_path nvarchar(1000) /* folder containing BCPFORMAT files used to explain csv files */
AS
BEGIN
EXEC sp_executesql 'DELETE FROM @table_name', @table_name;
EXEC sp_executesql 'BULK INSERT @table_name
FROM @csv_path
WITH (FIRSTROW = 1 , FORMATFILE = @bcp_format_path)',
@table_name,
@csv_path,
@bcp_format_path;
END
您的更新不起作用。應該是''BULK INSERT'+ quotename(@table_name)+'FROM @csv_path ...'' – 2012-03-21 00:08:44
更可能需要正確的參數聲明。無論如何,@菲利普是對的,問題附加的「答案」肯定不會工作。 – 2012-03-21 00:33:43