declare @results varchar(max)SELECT @results = dbo.CLR_WebQuery('http://www.sqlservercentral.com/Forums/Topic453789-5-1.aspx?Highlight=WebReader')
'requires 'Imports System.Net <Microsoft.SqlServer.Server.SqlFunction()> Public Shared Function CLR_WebQuery(ByVal URL As String) As SqlChars ' varchar(8000) = SqlString, varchar(max) = SqlChars Dim request As WebRequest = HttpWebRequest.Create(URL) Using response As WebResponse = request.GetResponse() Using dataStream As Stream = response.GetResponseStream() Using reader As New StreamReader(dataStream) Dim responseFromServer As String = reader.ReadToEnd() Return New SqlChars(New SqlString(responseFromServer)) End Using End Using End Using request = Nothing End Function
EXECUTE @hResult = sp_OACreate ''Scripting.FileSystemObject'' , @objFileSystem OUTIF @hResult <> 0 BEGIN EXEC sp_OAGetErrorInfo @objFileSystem, @ErrorSource OUT, @ErrorDesc OUT SET @ErrorFailPoint = ''Creating FSO'' GOTO DestroyFSO RETURN END SET @FileNameAndPath = @Path + ''\'' + @FileName -- Read fileEXECUTE @hResult = sp_OAMethod @objFileSystem, ''OpenTextFile'', @objTextStream OUT, @FileNameAndPath, 1, false, 0--for reading, FormatASCIIIF @hResult <> 0 BEGIN EXEC sp_OAGetErrorInfo @objFileSystem, @ErrorSource OUT, @ErrorDesc OUT SET @ErrorFailPoint = ''Opening Reponse File'' GOTO Destroy RETURN END SET @ResponseText = '''' WHILE @hResult = 0 BEGIN EXECUTE @hResult = sp_OAGetProperty @objTextStream, ''AtEndOfStream'', @YesOrNo OUTPUT IF @hResult <> 0 BEGIN EXEC sp_OAGetErrorInfo @objTextStream, @ErrorSource OUT, @ErrorDesc OUT SET @ErrorFailPoint = ''Checking AtEndOfStream'' GOTO Destroy RETURN END IF @YesOrNo <> 0 BREAK EXECUTE @hResult = sp_OAMethod @objTextStream, ''Read'', @Chunk OUTPUT, 4000 IF @hResult <> 0 BEGIN EXEC sp_OAGetErrorInfo @objTextStream, @ErrorSource OUT, @ErrorDesc OUT SET @ErrorFailPoint = ''Reading Chunk'' GOTO Destroy RETURN END SET @ResponseText = @ResponseText + ISNULL(@Chunk, '''') END EXECUTE @hResult = sp_OAMethod @objTextStream, ''Close'' IF @hResult <> 0 BEGIN EXEC sp_OAGetErrorInfo @objTextStream, @ErrorSource OUT, @ErrorDesc OUT SET @ErrorFailPoint = ''Closing Response File'' GOTO Destroy RETURN END -- Record response info SET @ResponseXml = CAST(@ResponseText AS XML)Destroy: EXEC sp_OADestroy @objTextStreamDestroyFSO: EXEC sp_OADestroy @objFileSystem