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 に答える