将select datename()结果传递给存储过程

时间:2011-07-27 13:42:28

标签: sql sql-server tsql stored-procedures

我正在尝试使用包含上个月名称的varchar来调用存储过程。

exec my_sp @subject='Report for June 2011';

除了June 2011应该是动态的(取决于您调用存储过程的月份),而不是静态的。实现这一目标的最佳方法是什么?

我可以按照所需格式获取前一个月:

select datename(month, dateadd(month,-1,getdate()))+' '+datename(year, dateadd(month,-1,getdate()))

但我不知道如何将它传递给存储过程。

2 个答案:

答案 0 :(得分:1)

        Declare @reportText varchar(40);
    Set @reportText =  datename(month, dateadd(month,-1,getdate()))+' '+datename(year, dateadd(month,-1,getdate()))

exec my_sp @reportText;

答案 1 :(得分:1)

DECLARE @ReportMonth VARCHAR(100)

SELECT @ReportMonth = 'Report for ' + DATENAME(MONTH, DATEADD(MONTH,-1,GETDATE()))+' '+DATENAME(YEAR, DATEADD(MONTH,-1,GETDATE()))

EXEC my_sp @subject=@ReportMonth