Recuperar parametro desde procedimiento almacenado

19/10/2006 - 11:38 por Salsita | Informe spam
Hola a todos.

Puede alguien decirme como puedo recuperar un parámetro de salida (OUTPUT)
de un proc. almacenado desde otro procedimiento almacenado???

Un saludo y gracias de antemano por vuestra ayuda.

Preguntas similare

Leer las respuestas

#1 Maxi
19/10/2006 - 14:23 | Informe spam
Hola, si pulsas F1 sobre el analizador de consultas encontraras algo llamado
BOL (Book on line) ahi mismo dice:

USE Northwind
GO
CREATE PROCEDURE SampleProcedure @EmployeeIDParm INT,
@MaxQuantity INT OUTPUT
AS
DECLARE @ErrorSave INT
SET @ErrorSave = 0

SELECT FirstName, LastName, Title
FROM Employees
WHERE EmployeeID = @EmployeeIDParm

IF (@@ERROR <> 0)
SET @ErrorSave = @@ERROR

SELECT @MaxQuantity = MAX(Quantity)
FROM [Order Details]

IF (@@ERROR <> 0)
SET @ErrorSave = @@ERROR

RETURN @ErrorSave
GO
Cuando se ejecuta un procedimiento almacenado, los parámetros de entrada
pueden tener establecido su valor a una constante o usar el valor de una
variable. Los parámetros de salida y los códigos de retorno deben devolver
sus valores en una variable. Los parámetros y los códigos de retorno pueden
intercambiar valores de datos con las variables de Transact-SQL o con
variables de aplicación.

Si un procedimiento almacenado se llama desde un lote o una secuencia de
comandos, los valores de los parámetros y de los códigos de retorno pueden
usar las variables de Transact-SQL definidas en el mismo lote. Este ejemplo
es un lote en el que se ejecuta el procedimiento creado anteriormente. El
parámetro de entrada se especifica como una constante y el parámetro de
salida y el código de retorno colocan sus valores en variables de
Transact-SQL:

DECLARE @ReturnCode INT
DECLARE @MaxQtyVariable INT

EXEC @ReturnCode = SampleProcedure @EmployeeIDParm = 9,
@MaxQuantity = @MaxQtyVariable OUTPUT

PRINT ' '
PRINT 'Return code = ' + CAST(@ReturnCode AS CHAR(10))
PRINT 'Maximum Quantity = ' + CAST(@MaxQtyVariable AS CHAR(10))
GO


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Salsita" escribió en el mensaje
news:%
Hola a todos.

Puede alguien decirme como puedo recuperar un parámetro de salida (OUTPUT)
de un proc. almacenado desde otro procedimiento almacenado???

Un saludo y gracias de antemano por vuestra ayuda.

Respuesta Responder a este mensaje
#2 Salsita
19/10/2006 - 16:49 | Informe spam
Gracias, lo he comprendido.

Lo he probado y efectivamente, funciona.

Pero ahora tengo otro problema, q no acabo de comprender. A ver si puedes
echarme una mano.
Como sabes tengo un procedimiento almacenado que llama a otro para recuperar
un parametro output y meterlo en una variable. El caso es que cuando lo
ejecuto me sale el siguiente error:

"Desde una función sólo se pueden ejecutar funciones y procedimientos
almacenados extendidos"

Gracias por tu ayuda.

"Maxi" escribió en el mensaje
news:ev$
Hola, si pulsas F1 sobre el analizador de consultas encontraras algo
llamado BOL (Book on line) ahi mismo dice:

USE Northwind
GO
CREATE PROCEDURE SampleProcedure @EmployeeIDParm INT,
@MaxQuantity INT OUTPUT
AS
DECLARE @ErrorSave INT
SET @ErrorSave = 0

SELECT FirstName, LastName, Title
FROM Employees
WHERE EmployeeID = @EmployeeIDParm

IF (@@ERROR <> 0)
SET @ErrorSave = @@ERROR

SELECT @MaxQuantity = MAX(Quantity)
FROM [Order Details]

IF (@@ERROR <> 0)
SET @ErrorSave = @@ERROR

RETURN @ErrorSave
GO
Cuando se ejecuta un procedimiento almacenado, los parámetros de entrada
pueden tener establecido su valor a una constante o usar el valor de una
variable. Los parámetros de salida y los códigos de retorno deben devolver
sus valores en una variable. Los parámetros y los códigos de retorno
pueden intercambiar valores de datos con las variables de Transact-SQL o
con variables de aplicación.

Si un procedimiento almacenado se llama desde un lote o una secuencia de
comandos, los valores de los parámetros y de los códigos de retorno pueden
usar las variables de Transact-SQL definidas en el mismo lote. Este
ejemplo es un lote en el que se ejecuta el procedimiento creado
anteriormente. El parámetro de entrada se especifica como una constante y
el parámetro de salida y el código de retorno colocan sus valores en
variables de Transact-SQL:

DECLARE @ReturnCode INT
DECLARE @MaxQtyVariable INT

EXEC @ReturnCode = SampleProcedure @EmployeeIDParm = 9,
@MaxQuantity = @MaxQtyVariable OUTPUT

PRINT ' '
PRINT 'Return code = ' + CAST(@ReturnCode AS CHAR(10))
PRINT 'Maximum Quantity = ' + CAST(@MaxQtyVariable AS CHAR(10))
GO


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Salsita" escribió en el mensaje
news:%
Hola a todos.

Puede alguien decirme como puedo recuperar un parámetro de salida
(OUTPUT) de un proc. almacenado desde otro procedimiento almacenado???

Un saludo y gracias de antemano por vuestra ayuda.





Respuesta Responder a este mensaje
#3 Salsita
19/10/2006 - 16:53 | Informe spam
Perdón, no es exactamente así como lo he contado. El "EXEC SP OUTPUT"
para recuperar el valor de la variable lo he introducido dentro de una
función, no dentro de otro proc. almacenado.
Está ahí el problema? no puedo hacerlo desde funciones?? hay alguna forma de
recuperar parametros de salida de proc. almacenados dentro de una función??
1000 gracias.

"Salsita" escribió en el mensaje
news:%
Gracias, lo he comprendido.

Lo he probado y efectivamente, funciona.

Pero ahora tengo otro problema, q no acabo de comprender. A ver si puedes
echarme una mano.
Como sabes tengo un procedimiento almacenado que llama a otro para
recuperar un parametro output y meterlo en una variable. El caso es que
cuando lo ejecuto me sale el siguiente error:

"Desde una función sólo se pueden ejecutar funciones y procedimientos
almacenados extendidos"

Gracias por tu ayuda.

"Maxi" escribió en el mensaje
news:ev$
Hola, si pulsas F1 sobre el analizador de consultas encontraras algo
llamado BOL (Book on line) ahi mismo dice:

USE Northwind
GO
CREATE PROCEDURE SampleProcedure @EmployeeIDParm INT,
@MaxQuantity INT OUTPUT
AS
DECLARE @ErrorSave INT
SET @ErrorSave = 0

SELECT FirstName, LastName, Title
FROM Employees
WHERE EmployeeID = @EmployeeIDParm

IF (@@ERROR <> 0)
SET @ErrorSave = @@ERROR

SELECT @MaxQuantity = MAX(Quantity)
FROM [Order Details]

IF (@@ERROR <> 0)
SET @ErrorSave = @@ERROR

RETURN @ErrorSave
GO
Cuando se ejecuta un procedimiento almacenado, los parámetros de entrada
pueden tener establecido su valor a una constante o usar el valor de una
variable. Los parámetros de salida y los códigos de retorno deben
devolver sus valores en una variable. Los parámetros y los códigos de
retorno pueden intercambiar valores de datos con las variables de
Transact-SQL o con variables de aplicación.

Si un procedimiento almacenado se llama desde un lote o una secuencia de
comandos, los valores de los parámetros y de los códigos de retorno
pueden usar las variables de Transact-SQL definidas en el mismo lote.
Este ejemplo es un lote en el que se ejecuta el procedimiento creado
anteriormente. El parámetro de entrada se especifica como una constante y
el parámetro de salida y el código de retorno colocan sus valores en
variables de Transact-SQL:

DECLARE @ReturnCode INT
DECLARE @MaxQtyVariable INT

EXEC @ReturnCode = SampleProcedure @EmployeeIDParm = 9,
@MaxQuantity = @MaxQtyVariable OUTPUT

PRINT ' '
PRINT 'Return code = ' + CAST(@ReturnCode AS CHAR(10))
PRINT 'Maximum Quantity = ' + CAST(@MaxQtyVariable AS CHAR(10))
GO


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Salsita" escribió en el mensaje
news:%
Hola a todos.

Puede alguien decirme como puedo recuperar un parámetro de salida
(OUTPUT) de un proc. almacenado desde otro procedimiento almacenado???

Un saludo y gracias de antemano por vuestra ayuda.









email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida