Skip to content
Branch: master
Find file Copy path
1 contributor

Users who have contributed to this file

80 lines (68 sloc) 2.73 KB
Author: Leandro Santiago Gomes
Descrição: Essa função utiliza a mesma regra de negócio que o webservice do site ViaCEP.
Para usar essa função é necessário executar o script pelo menos 1 vez. A função
retorna uma tabela de dados conforme o padrão do webservice:
-> (cep, logradouro, complemento, bairro, localidade, unidade, uf, ibge, gia)
IF (EXISTS (SELECT * FROM sysobjects WHERE (id = object_id(N'dbo.fnViaCep')) AND (xtype IN (N'FN', N'IF', N'TF'))))
DROP FUNCTION [dbo].[fnViaCep];
CREATE FUNCTION dbo.fnViaCep(@CEP varchar(1000))
cep varchar(10),
logradouro varchar(100),
complemento varchar(100),
bairro varchar(100),
localidade varchar(100),
unidade varchar(100),
uf char(2),
ibge char(7),
gia varchar(10)
DECLARE @authHeader VARCHAR(64),
@contentType VARCHAR(64),
@postData VARCHAR(2000),
@responseText VARCHAR(2000),
@responseXML VARCHAR(2000),
@ret INT,
@status VARCHAR(32),
@statusText VARCHAR(32),
@token INT,
@url VARCHAR(256),
@xml XML;
SET @authHeader = 'BASIC 0123456789ABCDEF0123456789ABCDEF';
SET @contentType = 'application/x-www-form-urlencoded';
SET @url = '' + @CEP + '/xml/';
-- Open the connection.
EXEC @ret = sp_OACreate 'MSXML2.ServerXMLHTTP', @token OUT;
-- IF @ret <> 0 PRINT (CAST('Unable to open HTTP connection.' AS INT));
-- Send the request.
EXEC @ret = sp_OAMethod @token, 'open', NULL, 'GET', @url, 'false';
EXEC @ret = sp_OAMethod @token, 'setRequestHeader', NULL, 'Authentication', @authHeader;
EXEC @ret = sp_OAMethod @token, 'setRequestHeader', NULL, 'Content-type', @contentType;
EXEC @ret = sp_OAMethod @token, 'send', NULL
-- Handle the response.
EXEC @ret = sp_OAGetProperty @token, 'status', @status OUT;
EXEC @ret = sp_OAGetProperty @token, 'statusText', @statusText OUT;
EXEC @ret = sp_OAGetProperty @token, 'responseText', @responseText OUT;
SET @xml = CONVERT(XML, replace(@responseText,'<?xml version="1.0" encoding="UTF-8"?>',''), 1);
t.c.value('cep[1]', 'varchar(10)') as cep,
t.c.value('logradouro[1]', 'varchar(100)') as logradouro,
t.c.value('complemento[1]', 'varchar(100)') as complemento,
t.c.value('bairro[1]', 'varchar(100)') as bairro,
t.c.value('localidade[1]', 'varchar(100)') as localidade,
t.c.value('unidade[1]', 'varchar(100)') as unidade,
t.c.value('uf[1]', 'char(2)') as uf,
t.c.value('ibge[1]', 'char(7)') as ibge,
t.c.value('gia[1]', 'char(7)') as gia
FROM @xml.nodes('//xmlcep') t(c)
-- Close the connection.
EXEC @ret = sp_OADestroy @token;
-- IF @ret <> 0 RAISERROR('Unable to close HTTP connection.', 10, 1);
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.