【问题标题】:Stored procedure SQL Server parameter存储过程 SQL Server 参数
【发布时间】:2012-08-28 08:31:30
【问题描述】:

我想为下面的 SQL Server 表写一个存储过程:

No    Date          Days       Percentage
 1    17-Aug-12      2          -0.34%
 2    3-Aug-12       15         -29.39%
 3    27-Jul-12      22          12.02%
 4    20-Jul-12      29         -0.64%
 5    13-Jul-12      36         -3.45%
 6    6-Jul-12       43         -99.93%
 7    29-Jun-12      50          41.26%

这里我想动态地将参数传递给百分比列或天数列。

请帮助编写一个存储过程以仅选择“12% - 15%”范围内的百分比

【问题讨论】:

  • “或任何其他列”是什么意思?您是否需要一种方法来传递参数以说明要检查的哪个列?

标签: sql sql-server-2005 stored-procedures


【解决方案1】:

简单地检查百分比...

CREATE PROCEDURE [GetPercentages]
( @Low INT, @High INT )
AS
BEGIN
    SELECT *
    FROM [MyTable]
    WHERE [Percentage] BETWEEN @Low AND @High
END

对于更复杂的检查(表和/或字段是动态指定的),您可以考虑构建一个 TSQL 字符串以针对 sp_executesql 运行。

【讨论】:

    【解决方案2】:

    您可以将 minvalue 和 maxvalue 等参数作为两个不同的参数传递,然后将它们用于您的 SP。

    【讨论】:

      【解决方案3】:

      尝试类似的东西

      IF EXISTS (SELECT name 
                 FROM sys.procedures 
                 WHERE name = N'myspSelectDateRange') 
      DROP PROCEDURE myspSelectDateRange;
      GO
      CREATE PROCEDURE myspSelectDateRange @DateA DATETIME, @DateB DATETIME 
      AS
      SELECT [SeqNo], [MyDate], [Days], [Percentage] 
      FROM MyTable 
      WHERE [MyDate] 
      BETWEEN @DateA AND @DateB;
      GO
      

      我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-11
        • 2010-12-21
        • 2015-04-24
        • 2012-02-02
        相关资源
        最近更新 更多