Möchte man im MS SQL-Server Code zur Laufzeit generieren und Ausführen lassen (hier im Trigger), ist das kein großes Problem:

DECLARE @SQL nvarchar(200)
SET @SQL=N'SELECT xy FROM myTable WHERE x=1'
EXEC @SQL

Schwieriger wird es, wenn die Abfrage eine Prüfung durchführen soll und aufgrund des Ergebnisses weitere Aktionen ausgeführt werden. Das bedeutet, dass ein Ergebnis zurück in den aufrufenden Code transferiert werden muss. Leider läuft jede EXEC-Anweisung in einem eigenen Kontext, auf den von außen nicht zugegriffen werden kann. Dieses Problem muss man umgehen.

DECLARE @SQL nvarchar(200)
DECLARE @rueckgabe int
SET @SQL=N'SELECT xy,@min=min(y) FROM myTable WHERE x=1'
EXEC sp_executesql @SQL, N'@min int OUTPUT', @rueckgabe OUTPUT
IF @rueckgabe>5
BEGIN
  --do something
END

Es wird die mitgelieferte Stored Procedure “sp_executesql” verwendet, mit der der SQL-Code ausgeführt wird. Weiter wird eine interner Parameter definiert (hier @min), der auch noch als Ausgabeparameter gekennzeichnet wird. Dieser kann zurückgegeben und in der der ursprünglichen Codebasis wiederverwendet werden.

siehe MS MSDN sp_execute