Procedimiento almacenado invocando dll – sql sql-server stored-procedure

Pregunta:


Tengo que crear un procedimiento almacenado que recibe un parámetro y devuelve otro. Dentro del procedimiento declaro una variable y le doy valor con un select. Posteriormente con la variable de entrada y la obtenida del select invoco a una dll. Tengo esto, pero no se llega a crear el SP:

CREATE PROCEDURE [dbo].[SpInvoke]
(@funcion NVARCHAR (MAX), 
@salida REAL OUTPUT)
AS 
declare @url as nvarchar (max) = SELECT TOP 1 url FROM Config
EXTERNAL NAME [User.BBDD.SQLServer].[StoredProcedures].[SpInvoke]
GO

Preguntado por: scastro

Pablo Claus

Según la documentación la única línea de código que es permitida con un SP que llame a una dll es EXTERNAL, por lo que no se puede usar otra instrucción SQL dentro.

Te recomiendo que hagas lo siguiente. La variable url inicializala con el valor de la consulta afuera del SP y luego enviala como parámetro. De esta manera podrás llamar a la dll con ese valor. Algo así:

CREATE PROCEDURE [dbo].[SpInvoke]
(@funcion NVARCHAR (MAX),
 @url  nvarchar (max),
 @salida REAL OUTPUT)
AS 
EXTERNAL NAME [User.BBDD.SQLServer].[StoredProcedures].[SpInvoke]
GO

/*Antes de llamar al SP*/
declare @url as nvarchar (max) = (SELECT TOP 1 url FROM Config)
Excute PROCEDURE [dbo].[SpInvoke] @funcion, @url,...

Fuente

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *