我收到以下錯誤,當我執行我的存儲過程:錯誤在SQL存儲過程
消息102,級別15,狀態1,行6
附近有語法錯誤「2011」。
(1行(S)的影響)
這裏是存儲過程:
ALTER PROCEDURE [dbo].[DeliveryFileNames]
AS
BEGIN
SET NOCOUNT ON;
declare @SQL nvarchar(4000)
Create Table #DelivTemp(
Style nvarchar(50),
Material nvarchar(50),
Filename nvarchar(100),
delivered_date date)
set @SQL=
N'insert into #DelivTemp
Select distinct Style,Material,filename
from OPENQUERY(GCS_PRODUCTION,
''SELECT LEFT(FILENAME,locate(''''_'''',FILENAME)-1)as Style,
substring_index(filename,''''_'''',2)as Material,filename,
delivered_date FROM view_delivery_log
where delivered_date > ''2011%'' order by Style '')'
exec (@SQL)
drop table dbo.DelivFN
Select * into dbo.DelivFN
from #DelivTemp
END
我使用OPENQUERY從SQL Server 2008 R2上的鏈接服務器更新SQL表。
我知道下劃線是一個真正的問題,但我嘗試了很多選項,包括\
,%
以及單引號和雙引號。
無論我得到了相同的結果。我可以獨立於存儲過程運行查詢並獲得正確的結果。多次引用的文件名字段格式爲00000000_ABC4_A.png
。我正在使用下劃線標識我爲報告目的需要的文件名的組件。
你的#temp表有4列,但你的插入語句只有3個。所以一旦你解決了分析問題,你會在插入時得到一個錯誤。您需要明確地爲日期列添加值,爲其設置默認值,或者在插入時使用適當的列列表並將其保留。 –