linked - print sql server stored procedure
Combinar procedimiento almacenado y consulta en T-SQL. (2)
Si su SP puede reescribirse como un UDF valuado en una tabla en línea, estos normalmente funcionan muy bien y son equivalentes a una vista parametrizada. ITVF se puede utilizar en cualquier lugar en el que usaría una tabla o vista.
Si su SP no funciona como un TVF en línea (se requiere manipulación de variables locales), puede funcionar como un TVF de múltiples instrucciones (contiene un BEGIN / END) que puede o no funcionar mal dependiendo de lo que tenga que hacer.
Después de que su SP se haya convertido en un UDF, aún puede llamar al UDF desde su SP (SELECT * FROM udf (params)) o en cualquier otro lugar puede usarse para uniones, etc., por lo que todo su código está dentro del UDF. duplicación.
¿Cómo combino la ejecución de un procedimiento almacenado y el uso de su resultado o parámetros en una consulta SQL regular?
Por ejemplo, me gustaría hacer algo como lo siguiente:
-- passing result of SELECT to SP
SELECT a, b FROM t
EXEC my_sp a, b
-- passing result of SP to INSERT
INSERT INTO t
EXEC my_sp a, b
etc.
no, necesitas usar una tabla temporal
create table #results (col1 int, col2 varchar(5) ...)
INSERT INTO #results
EXEC YourProcedure @parma...
entonces puedes unirte a ella
SELECT
*
FROM YourTable y
JOIN #results r ON ...
....
Si no conoce las columnas y los tipos de datos del procedimiento, puede utilizar esta excelente respuesta: Inserte los resultados de un procedimiento almacenado en una tabla temporal.
En resumen, utiliza OPENROWSET
para ejecutar el procedimiento almacenado en una tabla #temp que se crea sobre la marcha, sin la necesidad de nombrar y conocer el tipo de todas las columnas.