В storprocedure как установить переменную на где? - PullRequest
0 голосов
/ 17 июня 2009
CREATE PROCEDURE[BoardID]

 @sParent varchar(8000)

AS

Select Boardid,PONO,ImageStatus
from BoardDetail

Where 
    Boardid=1 and @sParent 

Почему @sParent создает ошибку, как использовать эту переменную там, где ...... я хочу указать строку в качестве параметра, и она будет установлена ​​там, где ...... как @ sParent

Ответы [ 6 ]

2 голосов
/ 17 июня 2009

Похоже, что вы действительно хотите создать динамический 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 голос
/ 17 июня 2009

Если вы хотите передать предложение 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
1 голос
/ 17 июня 2009

Вам необходимо установить поле для вашего параметра @sParent в предложении WHERE:

...

WHERE Boardid = 1 AND [fieldNameThatIsMatchingSParent] = @ sParent

...

или аналогичный.

0 голосов
/ 17 июня 2009
CREATE PROCEDURE[BoardID]
 @sParent VARCHAR(8000)
AS

SELECT Boardid, PONO, ImageStatus
FROM BoardDetail
WHERE 
     Boardid = 1 
AND  ('0' != @sParent AND [ColumnName] LIKE @sParent)
0 голосов
/ 17 июня 2009

Вы можете использовать @sParent в двух местах (в зависимости от того, что вам нужно)

where [FieldName] = @sParent

или

where [FieldName] Like @sParent
0 голосов
/ 17 июня 2009
WHERE 
    ((@Boardid is null and 1=1) 
    OR 
    (@Boardid is not null and @Boardid = SomeTbl.Boardid))

Это предложение WHERE позволяет нам иметь необязательный параметр SQL без необходимости прибегать к динамически построенному SQL. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...