【问题标题】:How to use the same parameter more than once in a query如何在查询中多次使用相同的参数
【发布时间】:2009-08-06 10:00:02
【问题描述】:

我想在 SqlCE 数据库上运行与此类似的查询:

SELECT t.Field1, t.Field2
FROM MyTable t
WHERE t.Field1 = @Param
UNION ALL
SELECT t2.Field1, t2.Field2
FROM MyOtherTable t2
WHERE t2.Field1 = @Param

但是,运行它会导致错误消息:

重复的参数名称不是 允许。 [参数名称=@Param]

解决方法当然是定义@Param1@Param2 并为它们分配相同的值,但这对我来说感觉有点脏。有没有更简洁的解决方法来解决这个问题?

【问题讨论】:

  • 这个查询是由 sp_executesql 执行的吗?
  • 我不熟悉 sp_executesql,我创建了一个 SqlCeCommand 对象,我使用 ExecuteReader 方法执行它。

标签: sql sql-server-mobile


【解决方案1】:
SELECT * FROM (
SELECT t.Field1, t.Field2
FROM MyTable t
UNION ALL
SELECT t2.Field1, t2.Field2
FROM MyOtherTable t2
) sub
WHERE sub.Field1 = @Param

【讨论】:

  • 以同样的方式思考 - 从 UNION 创建视图或表函数(带 1 个参数)并将其用作简单查询。
【解决方案2】:

只将参数添加到参数集合中一次。您可以在查询中随意使用它。

【讨论】:

    【解决方案3】:

    我从未使用过 SQL CE,但也许这会起作用:

    DECLARE @P int
    
    SET @P = @Param
    
    SELECT t.Field1, t.Field2
    FROM MyTable t
    WHERE t.Field1 = @P
    UNION ALL
    SELECT t2.Field1, t2.Field2
    FROM MyOtherTable t2
    WHERE t2.Field1 = @P
    

    【讨论】:

      猜你喜欢
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      • 2013-03-28
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多