Как использовать один и тот же параметр более одного раза в запросе - PullRequest
3 голосов
/ 06 августа 2009

Я хочу выполнить запрос, подобный этому, в базе данных 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 и присвоить им одно и то же значение, но мне это кажется немного грязным. Есть ли более надежное решение этой проблемы?

Ответы [ 3 ]

1 голос
/ 06 августа 2009
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 голосов
/ 06 августа 2009

Я никогда не использовал 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
0 голосов
/ 06 августа 2009

Добавить параметр только один раз в коллекцию параметров. Вы можете использовать его сколько угодно раз в запросе.

...