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

@sParent varchar(8000) 

AS 

Select Boardid,PONO,ImageStatus 
from BoardDetail 

Where 
    Boardid=1 and @sParent 

Pourquoi créer @sParent erreur comment utiliser cette variable où ...... je veux fournir la chaîne en tant que paramètre et il sera mis sur l'endroit où ...... comme @sParentDans storprocedure comment définir une variable sur où?

+0

J'ai mis à jour ma réponse selon vos commentaires, espérons que cette aide. –

Répondre

1

Vous devez définir un champ à votre paramètre @sParent dans la clause WHERE:

...

OÙ BoardID = 1 ET [fieldNameThatIsMatchingSParent] = @sParent

...

ou similaire.

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

Cette clause WHERE nous permet d'avoir un paramètre SQL optionnel sans recourir à un SQL construit dynamiquement. Espérons que ça aide!

0

Vous pouvez utiliser @sParent dans lequel de 2 façons (selon ce que vous avez besoin)

where [FieldName] = @sParent 

ou

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

comment puis-je utiliser si comme où OÙ BoardID = 1 si (@sParent! = 0) ET [ColumnName] LIKE @sParent – Shamim

2

Il ressemble à ce que vous voulez vraiment est de créer une dynamique déclaration sql si c'est ce que vous voulez, puis essayez ceci:

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

Parlez de vous ouvrir à l'injection SQL. =) Mais oui, je crois que c'est ce que l'OP veut aussi ... pas très sûr. –

1

Si vous voulez passer la clause where dans votre sp essayez ceci:

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 
Questions connexes