Logotipo
Seguir

Cómo puedo ejecutar un stored procedure desde una consulta

En el caso en que tengamos que obtener datos a partir de un stored procedure en lugar de poder atacar directamente a las tablas y vistas de la base de datos,  tenemos dos opciones desde DataCycle Reporting:

  • Llamada directa: es muy sencillo pero tiene dos importantes limitaciones al tener que desactivarse el parser
    1. No es posible seleccionar qué campos quiero cargar en la plantilla
    2. No se puede cambiar el orden de los campos que devuelve la consulta
    3. No se pueden incluir filtros en la tarea de insertar datos
  • Utilizar OPENQUERY: no tiene las limitaciones anteriores, pero exige la creación de un Linked Server al propio servidor de base de datos. 

 

Llamada directa a un Stored Procedure

1. Abrir una nueva consulta

2. Desactivar el parser

                                                               sp1.jpg

3. Seleccionar "Editar consulta", escribir en la parte SQL:  exec [nombre del stored procedure] [par1],..,[parN]

                                                       sp2.jpg

4. Guardar la consulta ,si recibimos algun mensaje de no existe Select , aceptar y guardar igualmente

5. Cuando la utilicemos desde un proceso, observar que dado que no hay parser activado, no podemos seleccionar campos, ni cambiar el orden, ni incluir filtros.

 

                                   sp3.jpg

 

Uso de OPENQUERY

Es necesario definir un linked server (servidor vinculado) contra la base de datos de la que vamos a obtener datos

1. Desde SQL Manager de SQL Server, añadir un NUEVO Servidor vinculado

                                                                              sp4.jpg

 

2. Poner como nombre “LOCALHOST”, ya que no acepta el nombre del propio servidor

                                                   sp5.jpg

3. Agregar un inicio de sesión local, con los parámetros necesarios

                                           sp6.jpg

 

4. Desde DataCycle Reporting, abrir nueva consulta > Editar consulta

 

                                                     sp7.jpg

5. Escribir la llamada utilizando la siguiente nomenclatura:   

SELECT [campo1], [campo2], .., [campoN] FROM OPENQUERY([linked server],'exec [nombre del stored procedure] "[par1]","[par2], .., [parN]"')

Warning.jpg Debemos escribir los campos manualmente en la sentencia SQL

 

sp9.jpg

 

6.  Cuando la utilicemos desde un proceso, observar que ahora sí podemos tratarlo como una consulta normal, donde podemos seleccionar y ordenar campos, así como incluir filtros

 

                                           sp10.jpg

 

¿Fue útil este artículo?
Usuarios a los que les pareció útil: 2 de 2
¿Tiene más preguntas? Enviar una solicitud

0 Comentarios

Inicie sesión para dejar un comentario.
Tecnología de Zendesk