0

我在这里使用 sql server 2005,我想知道是否有办法让存储过程将变量 a 或变量 b 作为其参数。

现在,如果我声明 A 和 B,它需要 A 和 B。可以让它取 A 或 B 代替吗?因此,如果另一个没有价值,它会使用另一个?

前任:

@ID VARCHAR(255)
@MAKE VARCHAR(255)  
AS  
BEGIN  
    SET NOCOUNT ON  
    SELECT *  
    FROM CARS   
    WHERE ID = @ID OR MAKE =@MAKE

谢谢!

4

3 回答 3

1
create procedure MyProcedure
(
    @ID VARCHAR(255) = NULL,
    @MAKE VARCHAR(255) = NULL
)  
AS  

    SET NOCOUNT ON  

    SELECT *  
    FROM CARS   
    WHERE 
        (@ID IS NOT NULL AND ID = @ID)
        OR 
        (@MAKE IS NOT NULL AND MAKE =@MAKE)
于 2012-07-27T01:37:48.643 回答
1
IF ID IS NULL
    BEGIN
        /*Code goes here*/
    END
ELSE IF MAKE IS NULL
    BEGIN
        /*More code goes here*/
    END
ELSE
    BEGIN
        /*Even more code goes here*/
    END

我很确定您可以使用 NULL 调用函数。

而且,还要这样做:

@ID VARCHAR(255) = NULL
@MAKE VARCHAR(255) = NULL

阅读:http ://weblogs.asp.net/stanleygu/archive/2010/02/08/solution-5-implementing-optional-parameters-in-t-sql-stored-procedures.aspx

于 2012-07-27T01:39:59.307 回答
1

存储过程可以采用可选参数。

create procedure mysp
    @a varchar(255) = NULL,
    @b varchar(255) = NULL
as begin
   select * 
   from cars 
   where (a = @a and @a is not NULL) or 
               (b = @b and @b is not NULL);
end;
于 2012-07-27T01:41:32.457 回答