2009-08-06 29 views
3

我想运行与此类似的一个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并将它们分配相同的值,但这种感觉有点脏给我。对于这个问题有没有更清晰的解决方法?

+0

这是通过查询执行sp_executesql的? – 2009-08-06 10:06:09

+0

我对sp_executesql不熟悉,我创建了一个'SqlCeCommand'对象,我使用ExecuteReader方法执行。 – Daan 2009-08-06 10:10:43

回答

0

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

0

我从来没有使用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 
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 
+0

尽管这在SQL Server上正常工作,但它不会在SqlCE上运行...... – Daan 2009-08-06 11:58:19

+0

以同样的方式思考 - 从UNION创建视图或表函数(带有1个参数)并将其用作简单查询。 – Dewfy 2009-08-06 13:06:27

相关问题