【问题标题】:How to pass more than one values as parameter to sql statement?如何将多个值作为参数传递给 sql 语句?
【发布时间】:2013-03-22 12:27:28
【问题描述】:

我有一个大的 SQL 查询,我想使用该查询提取一些数据

declare @Period VARCHAR(10)  = 'MTD'
declare @Date DATETIME = '2011-08-31'

我有一个很大的select statement,我在其中传递上面的参数并执行输出。

现在我有 10 个不同的日期,每次都需要经过这里才能看到结果。

如何将这些日期传递给上述参数declare @Date DATETIME 我如何对其进行硬编码?

所以我想要的输出将是那些选定的日期,给我至少 3 个日期的提示?

【问题讨论】:

  • 你想用 10 个参数运行一次查询,还是用 1 个不同的参数运行 10 次查询?
  • 目前我通过手动输入不同的日期来运行 sql 查询 10 次并查看结果,但我想要一些东西,通过使用我可以为变量声明这 10 个日期声明 @Date DATETIME 并给出我的结果。就像我们对两个参数使用 Between 键一样

标签: sql sql-server-2008 tsql select stored-procedures


【解决方案1】:

使用表值参数。首先,创建一个类型:

CREATE TYPE dbo.Dates AS TABLE(d DATE);

现在您的存储过程可以将此类型作为参数:

CREATE PROCEDURE dbo.whatever
  @d dbo.Dates READONLY
AS
BEGIN
  SET NOCOUNT ON;

  SELECT t.columns
    FROM dbo.tableName AS t
    INNER JOIN @d AS d
    ON t.[date] = d.d;
END
GO

然后,您可以在您的应用程序中将此参数作为DataTable 传递,例如。

【讨论】:

  • 示例丢失请补全。非常感谢:)
  • 示例丢失请补全。不在应用程序中:(我想直接执行这个sql查询。非常感谢:)
  • @ashu 认为您需要提供更多信息。您的 SQL 查询如何获取您要检查的日期列表?他们必须来自某个地方。
猜你喜欢
  • 1970-01-01
  • 2011-08-07
  • 2020-11-24
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多