4

デフォルトのパラメータを使用してストアドプロシージャを作成しようとしています。クエリでは、次のようにします。

DECLARE @mydate DATETIME
DECLARE @MT DATETIME
DECLARE @MY DATETIME
SELECT @mydate = GETDATE()
SELECT @MT = DATEPART(MONTH,@mydate)
SELECT @MY =  DATEPART(YEAR,@mydate)

SELECT * FROM ....

私のストアドプロシージャでは、次のように試しましたが、ストアドプロシージャを実行すると、パラメータ値の入力を求められます。

USE ..
GO
..
ALTER PROCEDURE ...
(@mydate DATETIME
,@MT DATETIME
,@MY DATETIME)

AS
BEGIN ...
SELECT @mydate = GETDATE()
SELECT @MT = DATEPART(MONTH,@mydate)
SELECT @MY =  DATEPART(YEAR,@mydate)
---
SELECT * FROM ....

クエリの場合と同じように、ストアドプロシージャにパラメータ値を設定するにはどうすればよいですか?

4

1 に答える 1

4

これを試して..

他の人がそれに依存しているので、私は1つのパラメーターだけを置きました。

最初のアプローチ

USE ..
GO
..
ALTER PROCEDURE yourSP
(@mydateParam DATETIME)

AS
BEGIN ...
SELECT @mydate = @mydateParam
SELECT @MT = DATEPART(MONTH,@mydate)
SELECT @MY =  DATEPART(YEAR,@mydate)
  ---
SELECT * FROM ....

SPを呼び出すには:

DECLARE @mydateParam DATETIME
SELECT @mydateParam = GETDATE()
execute yourSP @mydateParam

2番目のアプローチ

ALTER Procedure yourSP
@mydateParam datetime = null
AS
BEGIN ...
IF @mydateParam is null
SET @mydateParam = getdate()
SELECT @mydate = @mydateParam
SELECT @MT = DATEPART(MONTH,@mydate)
SELECT @MY =  DATEPART(YEAR,@mydate)

   ---
SELECT * FROM ....

SPを呼び出すには:

DECLARE @mydateParam DATETIME
SELECT @mydateParam = GETDATE()
execute yourSP @mydateParam

また

execute yourSP
于 2012-08-09T15:25:05.940 に答える