2011-12-07 31 views
13

He almacenado el procedimiento A y deseo llamar al procedimiento de almacenamiento B desde A pasando un parámetro @mydate. El procedimiento almacenado B devolverá un conjunto de filas que puedo usar en el procedimiento A.Cómo llamar a un procedimiento almacenado (con parámetros) desde otro procedimiento almacenado sin tabla temporal

Investigué esto en Google pero no encontré nada sin usar una tabla temporal. ¿Hay alguna manera fácil de obtener esto sin una tabla temporal?

P.S .: Intenté hacer esto usando el procedimiento almacenado como A y una función como B fácilmente. Pero quiero saber si puedo hacerlo solo mediante el uso de procedimientos almacenados.

+0

Trate http://stackoverflow.com/questions/209383/select-columns-from-result-set-of- procedimiento almacenado: su pregunta exacta está cubierta allí. – dash

Respuesta

3

Puede llamar al comando Ejecutar.

EXEC spDoSomthing @myDate 

Editar:

Desde desea volver data..that es un poco más difícil. En su lugar, puede usar funciones definidas por el usuario que devuelven datos.

-2

Puede llamar a un procedimiento almacenado desde otro procedimiento almacenado mediante el comando EXECUTE.

Digamos que su procedimiento es X. Luego, en X puede utilizar

EXECUTE PROCEDURE Y() RETURNING_VALUES RESULT;" 
+0

Si publica código, XML o muestras de datos, ** POR FAVOR ** resalte esas líneas en el editor de texto y haga clic en el botón "muestras de código" ('{}') en la barra de herramientas del editor para formatear y sintaxis ¡destaquelo! –

+4

No creo que esta sintaxis de T-SQL (SQL Server) .... –

0

Puede crear variable de tabla en lugar de la tabla de apisonado en el procedimiento A y ejecutar el procedimiento B y se insertan en la tabla de temperatura por debajo de consulta.

DECLARE @T TABLE 
(
TABLE DEFINITION 
) 
. 
. 
. 
INSERT INTO @T 
EXEC B @MYDATE 

y continúa la operación.

7
Create PROCEDURE Stored_Procedure_Name_2 
    (
    @param1 int = 5 , 
    @param2 varchar(max), 
    @param3 varchar(max) 

) 
AS 


DECLARE @Table TABLE 
(
    /*TABLE DEFINITION*/ 
    id int, 
    name varchar(max), 
    address varchar(max) 
) 

INSERT INTO @Table 
EXEC Stored_Procedure_Name_1 @param1 , @param2 = 'Raju' ,@param3 [email protected] 

SELECT id ,name ,address FROM @Table 
3

Puede llamar a un procedimiento almacenado de esta manera dentro de procedimientos almacenados B.

CREATE PROCEDURE spA 
@myDate DATETIME 
AS 
    EXEC spB @myDate 

RETURN 0 
Cuestiones relacionadas