Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server 2005:Rufen Sie eine gespeicherte Prozedur aus einer WHERE-Klausel auf

Dies wird erreicht, indem Sie zuerst die gespeicherte Prozedur ausführen, die Ausgabe in einer #temp-Tabelle oder einer @tabel-Variablen erfassen und dann Ihre Abfrage für die Tabelle ausführen. Etwa so:

declare @droits_table (val ,... );
insert into @droits_table
exec up_droits(param, param);
SELECT distinct top 10 i.x, d.droit FROM v_droit d, v_info i WHERE d.nomdroit='yy' AND i.id<>2 AND (select val from @droits) <>3

Das funktioniert natürlich nicht, da up_droits die Parameter i.x und d.droit aus der Abfrage benötigt. Dies weist darauf hin, dass Ihre gespeicherte Prozedur wahrscheinlich eine View- oder Tabellenfunktion sein sollte.