2012-10-11 70 views
0

我有一個查詢錯誤在存儲過程中的變量聲明

create procedure pr_InsertFilterOnItemCreation 
@zCategoryId int, 
@zItemId int, 
@zFilterid int 
as 
declare @productId int 
set @productId = (SELECT convert(int,IDENT_CURRENT('item'))) 
if(@productId<>null) 
begin 
insert into t_lnk_cat_product_filter_item set [email protected],[email protected],[email protected],[email protected] 
select 1 
end 

我收到提示

不正確的語法「設置」關鍵字附近

+1

'if(@productId <> null)':從不爲真,因爲空比較總是未定義的,而undefined在這裏被視爲false。使用'not null'或'null'來測試空值;前者在你的情況。 –

回答

1

INSERT INTO的說法應該是這樣寫:

INSERT INTO t_lnk_cat_product_filter_item 
     (cde_catid, cde_productid, cde_filterid, cde_filteritemid) 
SELECT @zCategoryId, @productId, @zFilterid, @zItemId 

相反的:

insert into t_lnk_cat_product_filter_item 
set cde_catid = @zCategoryId, 
    cde_productid = @productId, 
    cde_filterid = @zFilterid, 
    cde_filteritemid = @zItemId 
0

爲什麼ü想要去的設置在這裏,只需插入值,如果表是空的或更新的相應值

insert into t_lnk_cat_product_filter_item  
(cde_catid, cde_productid, cde_filterid, cde_filteritemid)                             values (@zCategoryId, @productId, @zFilterid, @zItemId) 
0

要麼你做的事:

insert into t_lnk_cat_product_filter_item 
values(@value1, @value2, @value3) 

insert t_lnk_cat_product_filter_item 
select @value1, @value2, @value3 
相關問題