2009-08-06 30 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

相關問題