Código SQL:
Ver original-- =============================================
-- 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
AS
BEGIN
DECLARE
@VALOR VARCHAR(50),
@SQL VARCHAR(8000),
@finalQuery VARCHAR(8000),
@msg AS VARCHAR(100) OUTPUT
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
Y porque no lo pones asi en vez de poner tus variables como parametros las declaras dentro de tu procedure :)
saludos!