【问题标题】:Stored procedure parameter default value存储过程参数默认值
【发布时间】:2012-08-06 19:53:24
【问题描述】:

我正在尝试使用默认参数创建一个存储过程,在我的查询中我会这样做:

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 ....

如何像在查询中一样在存储过程中设置参数值?

【问题讨论】:

    标签: stored-procedures ssms


    【解决方案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
    

    第二种方法

    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
    

    【讨论】:

      猜你喜欢
      • 2018-05-09
      • 2010-09-14
      • 2016-11-04
      • 2016-08-31
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多