Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/04/2011, 07:24
Wladeck
 
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 12
Antigüedad: 16 años, 9 meses
Puntos: 0
Pregunta Problema con Stored Procedure

Amigos,
A lo largo de los años he encontrado mucha información que me ha servido en esta gran página.
Y ahora que tengo muchos conocimientos me he decidido a aportar y consultar o sea, ser miembro activo de esta comunidad...

Ahora a lo que vine, tengo un Store Proceduce mas o menos así:

Este realiza una consulta a un servidor Linkeado, todo bien hasta ahi. pero el problema está en lo siguiente.

Código:
-- =============================================
-- Author: Wlad
-- Create date: 06/04/2011
-- Description: Procedimiento para consultar a un servidor linkeado y obtener datos de una consulta "control de errores".
--Obtiene ID de un expediente por campo de consulta
-- =============================================
--USE SG_ESCANER_SNA

ALTER PROCEDURE SpRetornaIdExpediente
   
@VALOR VARCHAR(50),
@SQL VARCHAR(8000),
@finalQuery VARCHAR(8000),
@msg AS VARCHAR(100) OUTPUT

AS
BEGIN

    SET NOCOUNT ON;

    Begin Tran Tadd

    Begin Try

SET @SQL = 'SELECT SEP.ID_EXPEDIENTE
 FROM tabla SEP
WHERE SEP.HISTORICO = 1
AND SEP.VALOR = ' + ''''+ '''' + @VALOR+''''+''''

SET @finalQuery = 'SELECT * FROM OPENQUERY(SERVERLINKED,' + '''' + @SQL + '''' + ')'

EXEC(@finalQuery)

        SET @msg = 'Operación realizada correctamente.'

        COMMIT TRAN Tadd

    End try
    Begin Catch

        SET @msg = 'Ocurrio un Error: ' + ERROR_MESSAGE() + ' en la línea ' + CONVERT(NVARCHAR(255), ERROR_LINE() ) + '.'
        Rollback TRAN Tadd

    End Catch

END
GO
Cuando quiero ejecutar el Store Procedure me pide los valores de:
@SQL VARCHAR(8000),
@finalQuery VARCHAR(8000),
@msg AS VARCHAR(100) OUTPUT

la idea es que tome estos valores por los que están seteados en el STProcedure y no tener que ingresarlos para ejecutar el procedimiento.


Código:
USE [SG_ESCANER_SNA]
GO

DECLARE	@return_value int,
		@msg varchar(100)

SELECT	@msg = N'Mensaje retorno'

EXEC	@return_value = [dbo].[SpRetornaIdExpediente]
		@VALOR = N'1944429',
		@SQL = NULL,
		@finalQuery = NULL,
		@msg = @msg OUTPUT

SELECT	@msg as N'@msg'

SELECT	'Return Value' = @return_value

GO
si dejo
@SQLSGPT = NULL,
@finalQuery = NULL,
@msg = @msg OUTPUT
en Null no me retorna datos...

Espero su ayuda!...

Un abrazo.