venerdì 25 febbraio 2011

Chiamata a una funzione remota e incapsulare la risposta in una tabella temporanea

Con questa procedura è possibile richiamare una funzione su un server remoto, fare attenzione che prima devono essere abilitate le chiamate remote come descritto nel precedente post.
Creare la tabella Temporanea

CREATE TABLE #tmp (
cod char(10) ,
username varchar(80),
Codice_web varchar(10)
)


Dichiarare i parametri:

declare @la float
declare @lo float
declare @categoria nvarchar(MAX)


Dichiarare una stringa dove è possibile inserire i parametri:

DECLARE @sqlQuery VARCHAR(8000)
SET @sqlQuery = 'SELECT cod
, username
,Codice_web
FROM [DBRemoto].[dbo].[GeoSearch](
' + str(@lo) + '
, ' + str(@la) + '
, ''''' + @categoria + '''''
)'


E la stringa dove effettuare la chiamata remota e inserisci i risultati nella tabella temporanea:


DECLARE @finalQuery VARCHAR(8000)
SET @finalQuery = 'INSERT into #tmp SELECT cod
, username
,Codice_web
FROM OPENQUERY([ServerCollegato],' + '''' + @sqlQuery + '''' + ')'


Alla fine si esegue la chiamata con

EXEC (@finalQuery)

select * from #tmp

drop table #tmp