none
Error OpenQuery RRS feed

  • Pregunta

  • Estimados.

    Tengo el siguiente SP en un SS2012

     

    CREATE PROCEDURE p_ejemplo
      @dato varchar(10) 
    AS
    BEGIN

    SELECT * FROM OPENQUERY(ServerRemoto,'
    Select 
    c1,c2
    From 
    TABLA1 A
    JOIN TABLA2 B ON A.Cod = B.Cod
    and  b.dato = @dato
    '
    )
    END

    El problema es que me da error:

    Statement(s) could not be prepared.

    Must declare the scalar variable "@dato".

    Y claro dentro de openquery la variable @dato no existe, pues es un parametro que le pasa el usuario.


    DBA SQL Server Santiago/Chile

    miércoles, 30 de agosto de 2017 17:28

Respuestas

  • Una manera de hacerlo funcionar es armar el query en una variable de comando, y luego ejecutar la variable de comando:

    DECLARE @sql nvarchar(max);
    
    SET @sql = "SELECT * FROM OPENQUERY(ServerRemoto,'
    Select 
    c1,c2
    From 
    TABLA1 A
    JOIN TABLA2 B ON A.Cod = B.Cod
    and  b.dato ="+@dato+"')"
    
    EXEC sp_executesql @sql;

    Saludos


    Mariano K.

    • Propuesto como respuesta Moderador M viernes, 1 de septiembre de 2017 19:24
    • Marcado como respuesta Moderador M lunes, 4 de septiembre de 2017 21:36
    miércoles, 30 de agosto de 2017 18:34