2009-12-09 111 views
-1

幫我在這過程中,我想從主表中刪除那些在@msisdn未來數和插入tblDeactive:與我的存儲過程

ALTER PROCEDURE [dbo].[msisdn_deactivition](@msisdn varchar(1024)) 
AS 
BEGIN 
SET NOCOUNT ON; 

    insert into tblDeactive SELECT * from msisdn_master where msisdn in (@msisdn); 
    delete from msisdn_master where msisdn in (@msisdn); 

END 

...但它不工作?

回答

3

看一看你不能代替值的列表中使用單一的查詢參數。一個參數=一個值。

請參閱Parameterize an SQL IN clause瞭解若干解決方案以及關於使用IN()謂詞使用參數的大量討論。

1

IN在TSQL中需要爲每個項目採用多個參數。目前,如果您通過它「123456789」,它正在尋找具有值「123456,789」的單個行。它不是尋找「123」,「456」或「789」。

尋找像分裂udf - 在互聯網上充足的東西。這將採用您的分隔字符串並返回一列值。通常你加入的udf結果(而不是使用IN)。

不要在這裏使用EXEC因爲你不應該相信輸入。