存储过程与自定义参数

时间:2013-03-10 18:22:15

标签: sql sql-server tsql

我正在尝试创建一个存储过程来汇总我创建的视图中的计数,但是我需要使用自定义参数,因为我想要过滤开始和结束日期(我的两个参数),那些应该是依靠用户输入。

例如,我想要这样的东西,除了我希望@Name是一个由另一个人设置的值,而不是在过程本身中设置的。什么是最好的方法呢?

DECLARE @Name VARCHAR(20)
SET @Name='User1'
SELECT
    SUM(
        CASE
            WHEN Name=@Name THEN Total*-1
            ELSE Total
        END
    ) [Total Adj]
    ,Date
FROM Table
GROUP BY Date

3 个答案:

答案 0 :(得分:2)

只需创建一个SP:

CREATE PROC some_proc @Name VARCHAR(20)
SELECT
    SUM(
        CASE
            WHEN Name=@Name THEN Total*-1
            ELSE Total
        END
    ) [Total Adj]
    ,Date
FROM Table
GROUP BY Date

并使用它:

some_proc 'User1'

答案 1 :(得分:0)

您可以通过以下方式打电话给您:

Exec spname 'name','param1','param2'

答案 2 :(得分:0)

我更喜欢桌面功能。基本上与过程相同,但可以类似于视图使用。此外,作为函数返回的东西,我更喜欢使用函数来返回数据。程序有所帮​​助。但是,这只是我个人的意见。

create function dbo.some_func(@Name Varchar(30))
returns table
as
begin
  return(
    SELECT
      SUM(CASE WHEN Name=@Name THEN Total*-1 ELSE Total END) [Total Adj]
         ,Date
    FROM Table
    GROUP BY Date
)
end