CREATE PROCEDURE[BoardID]
@sParent varchar(8000)
AS
Select Boardid,PONO,ImageStatus
from BoardDetail
Where
Boardid=1 and @sParent
爲什麼@sParent創建錯誤怎麼用在哪裏......我要提供的字符串作爲參數,這個變量,它會在被設置在那裏......像@sParent在storprocedure如何設置變量在哪裏?
CREATE PROCEDURE[BoardID]
@sParent varchar(8000)
AS
Select Boardid,PONO,ImageStatus
from BoardDetail
Where
Boardid=1 and @sParent
爲什麼@sParent創建錯誤怎麼用在哪裏......我要提供的字符串作爲參數,這個變量,它會在被設置在那裏......像@sParent在storprocedure如何設置變量在哪裏?
你需要一個字段設置爲您@sParent參數的WHERE子句中:
...
WHERE 板卡ID = 1 AND [fieldNameThatIsMatchingSParent] = @sParent
...
或類似的。
WHERE
((@Boardid is null and 1=1)
OR
(@Boardid is not null and @Boardid = SomeTbl.Boardid))
這個WHERE子句允許我們有一個可選的SQL參數,而不必求助於動態構造的SQL。 希望有所幫助!
您可以在那裏用2種方法(這取決於你的需要)
where [FieldName] = @sParent
或
where [FieldName] Like @sParent
CREATE PROCEDURE[BoardID]
@sParent VARCHAR(8000)
AS
SELECT Boardid, PONO, ImageStatus
FROM BoardDetail
WHERE
Boardid = 1
AND ('0' != @sParent AND [ColumnName] LIKE @sParent)
如何使用,如果在像 WHERE 板卡ID = 1 如果(@sParent!= 0) 和[的ColumnName] LIKE @sParent – Shamim 2009-06-17 08:39:13
這聽起來像你真正想要的在使用@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
談談自己打開了SQL注入。 =)但是,是的,我相信這也是OP想要的......只是不太安全。 – 2009-06-17 08:38:34
如果你想傳遞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
我已經更新了我的答案,按您的意見,希望這有助於。 – 2009-06-17 11:05:19