6

いずれにせよ、ストアド プロシージャ パラメータの 1 つをオプションとして設定できるかどうかを知りたいです。

IF @thing_id <> ''
BEGIN 
 SET @sFiltre = @sFiltre + ' AND OPERES.OPE_THING = ' +  CONVERT(VARCHAR,@thing_id)
END
4

5 に答える 5

16

ストアドプロシージャを作成するときは、このように作成します

Create Proc MyProc
@Param1 VarChar (20),
@Param2 VarChar (20) = NULL
AS

-- Your code here

GO

Param1 は必須です

Param2 はオプションです

于 2009-10-05T14:14:28.333 に答える
9

ストアド プロシージャ パラメータにデフォルト値を指定すると、オプションになります。

編集:

CREATE PROC [EDURE] [所有者。]
手続き名 [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
] [ ,...n ]

デフォルト

パラメータのデフォルト値です。デフォルトが定義されている場合、そのパラメーターの値を指定せずにプロシージャーを実行できます。デフォルトは定数である必要があり、NULL にすることもできます。プロシージャーがパラメーターを LIKE キーワードと共に使用する場合は、ワイルドカード文字 (%、_、[]、および [^]) を含めることができます。

SQL Server のドキュメント: パラメータの既定値の指定を参照してください。

于 2009-10-05T14:13:19.100 に答える
5

はい。パラメータ リストの最後に「オプションの」パラメータをリストし、デフォルト値 (通常は NULL) を指定します。

CREATE PROCEDURE MyProcedure
    @param1 int,
    @param2 varchar(200),
    @thing_id int = NULL
AS

    If @thing_id IS NULL Begin
       /* ... */
    End

END
于 2009-10-05T14:14:26.150 に答える
0

コードがもたらす SQL インジェクションの喜びは別として、そうできます。パラメータのデフォルト値を設定できます

CREATE PROCEDURE DoStuff @param1 varchar(20) = null

次に、ストアドプロシージャ内

IF @param1 IS NOT NULL
BEGIN
    ... Do stuff
END

デフォルト値は好きな値に設定できます。

于 2009-10-05T14:16:04.787 に答える
0
CREATE PROCEDURE SQL_INJECTION(
@MandatoryA int,
@MandatoryB varchar(50),
@MandatoryC datetime,
@OptionalA varchar(50) = NULL
)
AS

-- PUT YOUR DYNAMIC SQL HERE

GO

電話する

EXEC dbo.SQL_INJECTION @MandatoryA = 1, @MandatoryB = 'test', @MandatoryC = '2009-10-05', @OptionalA = DEFAULT

注 1: 動的 SQL = SQL インジェクション

于 2009-10-05T14:16:11.313 に答える