2009-08-06 2 views
3

Ich möchte eine Abfrage ähnlich wie diese auf einer SQLCE Datenbank auszuführen:Wie in einer Abfrage der gleiche Parameter mehr als einmal verwenden

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 

jedoch läuft dies führt in der Fehlermeldung:

Doppelte Parameternamen sind nicht zulässig. [Parameter name = @param]

Eine Abhilfe ist natürlich @Param1 und @Param2 zu definieren und sie den gleichen Wert zuweisen, aber das fühlt sich ein bisschen schmutzig zu mir. Gibt es eine sauberere Problemumgehung für dieses Problem?

+0

Ist diese Abfrage von sp_executesql ausgeführt? –

+0

Ich bin nicht vertraut mit sp_executesql, ich erstelle ein 'SqlCeCommand'-Objekt, das ich mit der 'ExecuteReader'-Methode ausführen. – Daan

Antwort

0

Fügen Sie den Parameter nur einmal zur Parametersammlung hinzu. Du kannst es wie oft du magst in der Abfrage verwenden.

0

Ich habe noch nie SQL CE verwendet, aber vielleicht wird diese Arbeit:

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

Während dies auf SQL Server funktioniert, wird dies nicht auf SqlCE ausgeführt ... – Daan

+0

Denken auf die gleiche Weise - erstellen Sie Ansicht oder Tabellenfunktion (mit 1 Parameter) von UNION und verwenden Sie es als einfache Abfrage. – Dewfy

Verwandte Themen