stored print linked into concatenar sql sql-server tsql stored-procedures dml

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.