Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 2

• Inicio

• ASP.NET
• ADO.NET
• C#
• VB.NET
• SQL Server
• MySql/PHP
• W7
• Varios
• Acerca de

Buscar

Llamadas a Dll desde stored procedures en SQL


Server
Publicado por: Alex Solano - Domingo, Septiembre 10, 2000 · 7 comentarios 35,463 views Imprimir

Desde Transact-SQL (T-SQL) tenemos la posibilidad de llamar a un método de un objeto ( DLL ), o como diría la
ayuda del SQL Server “Cómo crear un objeto de Automatización OLE “. Bien, no es una opción que utilicemos
mucho pero en algunos casos puede ser interesante o resultarnos útil hacer alguna llamada a algún método que
dispongamos en nuestras aplicaciones desde T-SQL.
(Actualizado 12.03.2011)

Para realizar este proceso existen una serie de sp de sistemas que realizan las tareas de conexión al objeto, llamada
al método deseado, destruir el objeto, etc …

Procedimientos almacenados extendidos de Automatización OLE

sp_OACreate IdProg | IdClase, objRetorno OUTPUT [,contexto]


– IDProg es el identificador de objeto OLE, es decir, el nombre de la DLL.NombreClase
– IdClase es el numero de registro {nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}
– objRetorno es el valor devuelto que debe de ser un int e identifica al objeto
– Contexto, especifica el contexto donde se ejecutará el objeto, puede tomar los siguientes valores: 1 = sólo
servidor OLE de proceso interno (.dll) 4 = sólo servidor OLE local (.exe) 5 = ambos servidores OLE, de proceso
interno y local
Por defecto es el 5

sp_OAMethod llamada al metod deseado del objeto.


sp_OAMethod objRetorno, nombreMétodo [, valorRetorno OUTPUT] [, [@nombreParámetro =] parámetro
[OUTPUT]

Tiene los siguientes parámetros


– objRetorno, Es el valor recogido del sp sp_Ocreate anterior
– NombreMetdo
– ValorRetorno OUTPUT
– @NombreParametro = @parametro [OUTPUT]

sp_OADestroy destruye el objeto OLE creado

Para más información buscar en los “Books OnLine”.


Vamos a ver como se utilizan estos SP en este breve artículo con un pequeño ejemplo como hariamos esto, el
ejemplo se ha desarrollado con Visual Basic 6.0 (SP-3) y SQL Server.

Ejem. Nuestro Stored Procedure llamara a una función creada en Visual Basic donde nos validaran una URL.

Código Visual Basic

Public Function COMPROBARURL(URL As String) As Long


Dim objURL As New MSXML.XMLHTTPRequest
Dim estado As Long

On Error GoTo ErrorURL

objURL.open “GET”, URL, False objURL.send


estado = objURL.Status
Salir: COMPROBARURL = estado
Exit Function

ErrorURL:
estado = Err.Number – vbObjectError
Resume Salir
End Function

Stored Procedure

Alter Procedure sp_ComprobarURL As


— Declaraciones del Objeto
Declare @Object int
— Identificador del Obejto
Declare @ret int
Declare @Estado numeric

— Primero comprobamos la conexión a la DLL


Exec @ret = sp_OACreate ‘pruebas.clslink’, @object OUT

— Si el estado de la conexión al objeto OLE es correcto


if @ret = 0
Begin
— ejecutamos la llamada al método COMPROBARURL
— y le pasamos Una dirección URL para comprobar
EXEC @ret = sp_OAMethod @Object, ‘COMPROBAURL’, @Estado OUTPUT, @URL =
“http://www.ethek.com”

— en estado nos devolverá el estado de esta URL, 200 si es valida


if @Estado
<> 200 print ‘URL no valida’
else
print ‘URL Valida’

End
else
print ‘error conexion obejto OLE’

EXEC @ret = sp_OADestroy @object

Saludos
Alex.

Categorias: SQLServer · Etiquetas:

También podría gustarte