# stored procedures bases de datos externas

**URL:** <https://foros.velneo.com/t/stored-procedures-bases-de-datos-externas/8759>\
**Category:** Velneo\
**Created:** [9 Marzo, 2016 11:56 UTC](https://foros.velneo.com/t/stored-procedures-bases-de-datos-externas/8759 "2016-03-09T11:56:07Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![esteban](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/esteban/32/41_2.png) [@esteban](https://foros.velneo.com/u/esteban)\
**Post date:** [9 Marzo, 2016 11:56 UTC](https://foros.velneo.com/t/stored-procedures-bases-de-datos-externas/8759/1 "2016-03-09T11:56:07Z")

</div>

Hola, por favor alguien sabe si podemos consumir stored procedores desde bases de datos externas???, llevo una par de días haciendo pruebas y no veo luz.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [9 Marzo, 2016 12:29 UTC](https://foros.velneo.com/t/stored-procedures-bases-de-datos-externas/8759/2 "2016-03-09T12:29:02Z")

</div>

Hola Esfero.

¿Qué base de datos externa estás probando?  
Lo de las “stored procedures” es propio de cada base de datos y habrá que comprobar si el driver ODBC soporta la ejecución de los mismos.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![esteban](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/esteban/32/41_2.png) [@esteban](https://foros.velneo.com/u/esteban)\
**Post date:** [9 Marzo, 2016 14:01 UTC](https://foros.velneo.com/t/stored-procedures-bases-de-datos-externas/8759/3 "2016-03-09T14:01:22Z")

</div>

Hola Seh, estoy utilizando SqlServer 2005 y superiores.  
En principio por la información que encontré de QT, el ODBC PARA sqlServer si lo soporta, pero no consigo que funcione desde Velneo y como no encuentro ningún tipo de documentación al respecto de velneo, me genera un sin fin de dudas

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [9 Marzo, 2016 16:13 UTC](https://foros.velneo.com/t/stored-procedures-bases-de-datos-externas/8759/4 "2016-03-09T16:13:59Z")

</div>

Hola Esfero.

Un pequeño ejemplo:

```auto

-- Este SP devuelve el registro con los datos de la Divisa
CREATE PROCEDURE Misp_ObtenerDivisas
@divisa char(3)
AS
BEGIN
   SELECT * FROM d_divisa WHERE cod_divisa = @divisa
END

```

En Velneo, una vez establecida la conexión ODBC, ejecutamos la consulta  
Set(ODBC\_CONSULTA\_SQL, “USE MiBaseDatos; EXEC Misp\_ObtenerDivisas ‘EUR’”)

Esto me ha funcionado con SQLEXPRESS 2015 (versión 12.0.4213), pero ya sabes, en esto y otros muchos temas de Velneo dependemos del Prueba y Error.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![esteban](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/esteban/32/41_2.png) [@esteban](https://foros.velneo.com/u/esteban)\
**Post date:** [9 Marzo, 2016 20:50 UTC](https://foros.velneo.com/t/stored-procedures-bases-de-datos-externas/8759/5 "2016-03-09T20:50:12Z")

</div>

Bueno pues para cerrar mi consulta os comento, lo primero mil gracias Seh por el apoyo continuo que realizas en el foro.

**¿Podemos consumir Procedimientos Almacenados de BD Externas desde Velneo?**   
_(Evidentemente siempre que la BD Externa los Soporte)_

La respuesta es Sí. (Al menos en los casos probados SQLServer 2005, SQLServer 2008, SQLServer 2014)

En los casos probados funciona consumiendo el procedimiento almacenado de 2 formas (funcionan las 2):

- Set(ODBC\_CONSULTA\_SQL, “EXEC Misp\_ObtenerDivisas ‘EUR’”) =\> Como menciona Seh
- Set(ODBC\_CONSULTA\_SQL, “{ CALL Misp\_ObtenerDivisas(‘EUR’) }”) =\> Importante las llaves

A modo de Ejemplo dejo el proceso completo, por si os resulta de ayuda en algún momento

----------- PROCEDIMIENTO ALMACENADO EN SQL SERVER ----------------

– Este SP devuelve el registro con los datos de la Divisa  
CREATE PROCEDURE Misp\_ObtenerDivisas  
@divisa char(3)  
@pais char(3)  
AS  
BEGIN  
SELECT \* FROM d\_divisa WHERE cod\_divisa = @divisa AND pais = @pais  
END

* * *

----- PROCESO EN VELNEO PARA CONSUMIR EL PROCEDIMIENTO ALMACENADO

BD:Crear Manejador(.Manejador, ODBC (Compatible con SQL Server), “DRIVER={SQL Server};SERVER=” + MOTOR + “;DATABASE=” + BD + “;WSID=.;Trusted\_connection=yes”)  
BD:Conectar(.Manejador, USER, PASS, OK, )  
…Set(ODBC\_CONSULTA\_SQL, “{ CALL Misp\_ObtenerDivisas(‘EUR’, ‘ESP’) }”)  
…//Set(ODBC\_CONSULTA\_SQL, “EXEC Misp\_ObtenerDivisas ‘EUR’, ‘ESP’”)  
…BD:SQL(.Manejador, ODBC\_CONSULTA\_SQL, N\_ROWS, )  
…BD:Recorer Lista(.Manejador)  
… _Instrucciones …_

* * *
