2009-06-17 27 views
0
CREATE PROCEDURE[BoardID] 

@sParent varchar(8000) 

AS 

Select Boardid,PONO,ImageStatus 
from BoardDetail 

Where 
    Boardid=1 and @sParent 

爲什麼@sParent創建錯誤怎麼用在哪裏......我要提供的字符串作爲參數,這個變量,它會在被設置在那裏......像@sParent在storprocedure如何設置變量在哪裏?

+0

我已經更新了我的答案,按您的意見,希望這有助於。 – 2009-06-17 11:05:19

回答

1

你需要一個字段設置爲您@sParent參數的WHERE子句中:

...

WHERE 板卡ID = 1 AND [fieldNameThatIsMatchingSParent] = @sParent

...

或類似的。

0
WHERE 
    ((@Boardid is null and 1=1) 
    OR 
    (@Boardid is not null and @Boardid = SomeTbl.Boardid)) 

這個WHERE子句允許我們有一個可選的SQL參數,而不必求助於動態構造的SQL。 希望有所幫助!

0

您可以在那裏用2種方法(這取決於你的需要)

where [FieldName] = @sParent 

where [FieldName] Like @sParent 
0
CREATE PROCEDURE[BoardID] 
@sParent VARCHAR(8000) 
AS 

SELECT Boardid, PONO, ImageStatus 
FROM BoardDetail 
WHERE 
    Boardid = 1 
AND ('0' != @sParent AND [ColumnName] LIKE @sParent) 
+0

如何使用,如果在像 WHERE 板卡ID = 1 如果(@sParent!= 0) 和[的ColumnName] LIKE @sParent – Shamim 2009-06-17 08:39:13

2

這聽起來像你真正想要的在使用@sParent是創建一個動態sql語句如果這就是你想要的然後試試這個:

Create Procedure [BoardID] 
    @sParent varchar(8000) 
AS 

Declare @SQL VarChar(8500) 

SELECT @SQL = 'Select Boardid,PONO,ImageStatus from BoardDetail Where 
    Boardid=1 and ' 
SELECT @SQL = @SQL + @sParent 

Exec (@SQL) 

GO 
+1

談談自己打開了SQL注入。 =)但是,是的,我相信這也是OP想要的......只是不太安全。 – 2009-06-17 08:38:34

1

如果你想傳遞WHERE子句到您的SP試試這個:

CREATE PROCEDURE[BoardID] 

@sParent varchar(8000) 

AS 

DECLARE @sql ntext 

SET @sql = 'Select Boardid,PONO,ImageStatus from BoardDetail Where Boardid=1' 

IF (@sParent <> '') 
BEGIN 
    SET @sql = @sql + ' and ' + @sParent 
END 

EXEC @sql