sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server 2005:llame a un procedimiento almacenado desde una cláusula WHERE

Esto se logra ejecutando primero el procedimiento almacenado, capturando el resultado en una tabla #temp o una variable @tabel y luego ejecutando su consulta en la tabla. Algo como esto:

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

Por supuesto, esto no funcionará porque up_droits necesita los parámetros i.x y d.droit de la consulta. Esto indica que su procedimiento almacenado probablemente debería ser una vista o una función con valores de tabla.