Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在查询中多次使用同一参数_Sql_Sql Server Mobile - Fatal编程技术网

Sql 如何在查询中多次使用同一参数

Sql 如何在查询中多次使用同一参数,sql,sql-server-mobile,Sql,Sql Server Mobile,我想在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并为它们分配相

我想在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
并为它们分配相同的值,但这对我来说有点脏。此问题是否有更清晰的解决方法?

仅向参数集合添加一次参数。您可以随时在查询中使用它。

我从未使用过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

这个查询是由sp_executesql执行的吗?我不熟悉sp_executesql,我创建了一个
SqlCeCommand
对象,我使用
ExecuteReader
方法执行它。我的想法是一样的-从UNION创建视图或表函数(带有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