Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
1| Name | Data Type | Length | Description |
|---|---|---|---|
| @cuit | varchar | 20 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
select domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
codpos,
tipo_domicilio
select created, * from domicilios_todos
--update domicilios_todos set tipo_domicilio = 'E'
where cuit = '27208925658'
and visible = 1
and codpos = 1125
--order by len(domicilio) desc, len(prv_nombre) desc, len(loc_nombre)
exec [sp_obtener_domicilios] '27208925658'
declare @resp smallint
exec @resp = [sp_comparo_domicilios] 'av. CORDOBA 3280 3 A', 'CORDOBA ,AV. 3280'
select @resp
*/
CREATE OR ALTER PROCEDURE dbo.sp_obtener_domicilios_ant
@cuit varchar(20)
AS
BEGIN
declare @domicilios table
(id int identity,
domicilio varchar(500),
pai_nombre varchar(100),
prv_nombre varchar(100),
loc_nombre varchar(100),
codpos varchar(100),
tipo_domicilio varchar(100),
created datetime)
declare @domicilios_ok table
(id int identity,
domicilio varchar(500),
pai_nombre varchar(100),
prv_nombre varchar(100),
loc_nombre varchar(100),
codpos varchar(100),
tipo_domicilio varchar(100),
created datetime)
declare @id int,
@domicilio varchar(500),
@pai_nombre varchar(100),
@prv_nombre varchar(100),
@loc_nombre varchar(100),
@codpos varchar(100),
@tipo_domicilio varchar(100),
@created datetime
declare @id2 int,
@domicilio2 varchar(500),
@pai_nombre2 varchar(100),
@prv_nombre2 varchar(100),
@loc_nombre2 varchar(100),
@codpos2 varchar(100),
@tipo_domicilio2 varchar(100),
@created2 datetime
declare @resp int
insert into @domicilios (domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
codpos,
tipo_domicilio,
created)
select replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
codpos,
tipo_domicilio,
isnull(created,'1901-01-01')
from domicilios_todos
where cuit = @cuit
and visible = 1
order by len(domicilio) desc, len(prv_nombre) desc, len(loc_nombre)
declare wc cursor for
select * from @domicilios
order by id
open wc
Fetch next from wc INTO
@id,
@domicilio,
@pai_nombre,
@prv_nombre,
@loc_nombre,
@codpos,
@tipo_domicilio,
@created
WHILE (@@FETCH_STATUS <> -1 )
BEGIN
if ((select count(*) from @domicilios where id = @id) = 0)
begin
Fetch next from wc INTO
@id,
@domicilio,
@pai_nombre,
@prv_nombre,
@loc_nombre,
@codpos,
@tipo_domicilio,
@created
continue
end
declare wc2 cursor for
select * from @domicilios
where id > @id
order by id
open wc2
Fetch next from wc2 INTO
@id2,
@domicilio2,
@pai_nombre2,
@prv_nombre2,
@loc_nombre2,
@codpos2,
@tipo_domicilio2,
@created2
WHILE (@@FETCH_STATUS <> -1 )
BEGIN
exec @resp = [sp_comparo_domicilios] @domicilio, @domicilio2
if (@resp = 1) -- son iguales
begin
if (@created2 > @created)
set @created = @created2
if (len(@domicilio2) > len(@domicilio) or len(@domicilio) is null)
set @domicilio = @domicilio2
if (len(@prv_nombre2) > len(@prv_nombre) or len(@prv_nombre) is null)
set @prv_nombre = @prv_nombre2
if (len(@loc_nombre2) > len(@loc_nombre) or len(@loc_nombre) is null)
set @loc_nombre = @loc_nombre2
if (len(@pai_nombre2) > len(@pai_nombre) or len(@pai_nombre) is null)
set @pai_nombre = @pai_nombre2
if (@pai_nombre2 = 'ARGENTINA' and (select isnumeric(@codpos2)) = 1 and len(@codpos2) > 4)
set @codpos2 = null
if (len(@codpos2) > len(@codpos) or len(@codpos) is null)
set @codpos = @codpos2
if (@tipo_domicilio is null) set @tipo_domicilio = ''
if (select CHARINDEX(@tipo_domicilio2,@tipo_domicilio)) = 0
begin
set @tipo_domicilio = @tipo_domicilio + @tipo_domicilio2
end
delete from @domicilios
where id = @id2
end
if (@prv_nombre = 'CIUDAD DE BUENOS AIRES' or
@prv_nombre = 'CIUDAD AUTONOMA DE BUENOS AIRES' or
@prv_nombre = 'CIUDAD AUTONOMA BUENOS AIRES' or
@prv_nombre = 'C.A.B.A.' or
@prv_nombre = 'CABA')
set @loc_nombre = null
if (@pai_nombre = 'ARGENTINA' and (select isnumeric(@codpos)) = 1 and len(@codpos) > 4)
set @codpos = null
if (rtrim(ltrim(@loc_nombre)) = '') set @loc_nombre = null
if (rtrim(ltrim(@prv_nombre)) = '') set @prv_nombre = null
if (rtrim(ltrim(@pai_nombre)) = '') set @pai_nombre = null
update @domicilios
set domicilio = @domicilio,
loc_nombre = @loc_nombre,
prv_nombre = @prv_nombre,
pai_nombre = @pai_nombre,
codpos = @codpos,
tipo_domicilio = @tipo_domicilio,
created = @created
where id = @id
Fetch next from wc2 INTO
@id2,
@domicilio2,
@pai_nombre2,
@prv_nombre2,
@loc_nombre2,
@codpos2,
@tipo_domicilio2,
@created2
end
CLOSE wc2
DEALLOCATE wc2
Fetch next from wc INTO
@id,
@domicilio,
@pai_nombre,
@prv_nombre,
@loc_nombre,
@codpos,
@tipo_domicilio,
@created
END
CLOSE wc
DEALLOCATE wc
select * from @domicilios where id is not null
--order by id
END
GO
GO
/*
select domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
codpos,
tipo_domicilio
select created, * from domicilios_todos
--update domicilios_todos set tipo_domicilio = 'E'
where cuit = '27208925658'
and visible = 1
and codpos = 1125
--order by len(domicilio) desc, len(prv_nombre) desc, len(loc_nombre)
exec [sp_obtener_domicilios] '27208925658'
declare @resp smallint
exec @resp = [sp_comparo_domicilios] 'av. CORDOBA 3280 3 A', 'CORDOBA ,AV. 3280'
select @resp
*/
CREATE OR ALTER PROCEDURE dbo.sp_obtener_domicilios_ant
@cuit varchar(20)
AS
BEGIN
declare @domicilios table
(id int identity,
domicilio varchar(500),
pai_nombre varchar(100),
prv_nombre varchar(100),
loc_nombre varchar(100),
codpos varchar(100),
tipo_domicilio varchar(100),
created datetime)
declare @domicilios_ok table
(id int identity,
domicilio varchar(500),
pai_nombre varchar(100),
prv_nombre varchar(100),
loc_nombre varchar(100),
codpos varchar(100),
tipo_domicilio varchar(100),
created datetime)
declare @id int,
@domicilio varchar(500),
@pai_nombre varchar(100),
@prv_nombre varchar(100),
@loc_nombre varchar(100),
@codpos varchar(100),
@tipo_domicilio varchar(100),
@created datetime
declare @id2 int,
@domicilio2 varchar(500),
@pai_nombre2 varchar(100),
@prv_nombre2 varchar(100),
@loc_nombre2 varchar(100),
@codpos2 varchar(100),
@tipo_domicilio2 varchar(100),
@created2 datetime
declare @resp int
insert into @domicilios (domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
codpos,
tipo_domicilio,
created)
select replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
codpos,
tipo_domicilio,
isnull(created,'1901-01-01')
from domicilios_todos
where cuit = @cuit
and visible = 1
order by len(domicilio) desc, len(prv_nombre) desc, len(loc_nombre)
declare wc cursor for
select * from @domicilios
order by id
open wc
Fetch next from wc INTO
@id,
@domicilio,
@pai_nombre,
@prv_nombre,
@loc_nombre,
@codpos,
@tipo_domicilio,
@created
WHILE (@@FETCH_STATUS <> -1 )
BEGIN
if ((select count(*) from @domicilios where id = @id) = 0)
begin
Fetch next from wc INTO
@id,
@domicilio,
@pai_nombre,
@prv_nombre,
@loc_nombre,
@codpos,
@tipo_domicilio,
@created
continue
end
declare wc2 cursor for
select * from @domicilios
where id > @id
order by id
open wc2
Fetch next from wc2 INTO
@id2,
@domicilio2,
@pai_nombre2,
@prv_nombre2,
@loc_nombre2,
@codpos2,
@tipo_domicilio2,
@created2
WHILE (@@FETCH_STATUS <> -1 )
BEGIN
exec @resp = [sp_comparo_domicilios] @domicilio, @domicilio2
if (@resp = 1) -- son iguales
begin
if (@created2 > @created)
set @created = @created2
if (len(@domicilio2) > len(@domicilio) or len(@domicilio) is null)
set @domicilio = @domicilio2
if (len(@prv_nombre2) > len(@prv_nombre) or len(@prv_nombre) is null)
set @prv_nombre = @prv_nombre2
if (len(@loc_nombre2) > len(@loc_nombre) or len(@loc_nombre) is null)
set @loc_nombre = @loc_nombre2
if (len(@pai_nombre2) > len(@pai_nombre) or len(@pai_nombre) is null)
set @pai_nombre = @pai_nombre2
if (@pai_nombre2 = 'ARGENTINA' and (select isnumeric(@codpos2)) = 1 and len(@codpos2) > 4)
set @codpos2 = null
if (len(@codpos2) > len(@codpos) or len(@codpos) is null)
set @codpos = @codpos2
if (@tipo_domicilio is null) set @tipo_domicilio = ''
if (select CHARINDEX(@tipo_domicilio2,@tipo_domicilio)) = 0
begin
set @tipo_domicilio = @tipo_domicilio + @tipo_domicilio2
end
delete from @domicilios
where id = @id2
end
if (@prv_nombre = 'CIUDAD DE BUENOS AIRES' or
@prv_nombre = 'CIUDAD AUTONOMA DE BUENOS AIRES' or
@prv_nombre = 'CIUDAD AUTONOMA BUENOS AIRES' or
@prv_nombre = 'C.A.B.A.' or
@prv_nombre = 'CABA')
set @loc_nombre = null
if (@pai_nombre = 'ARGENTINA' and (select isnumeric(@codpos)) = 1 and len(@codpos) > 4)
set @codpos = null
if (rtrim(ltrim(@loc_nombre)) = '') set @loc_nombre = null
if (rtrim(ltrim(@prv_nombre)) = '') set @prv_nombre = null
if (rtrim(ltrim(@pai_nombre)) = '') set @pai_nombre = null
update @domicilios
set domicilio = @domicilio,
loc_nombre = @loc_nombre,
prv_nombre = @prv_nombre,
pai_nombre = @pai_nombre,
codpos = @codpos,
tipo_domicilio = @tipo_domicilio,
created = @created
where id = @id
Fetch next from wc2 INTO
@id2,
@domicilio2,
@pai_nombre2,
@prv_nombre2,
@loc_nombre2,
@codpos2,
@tipo_domicilio2,
@created2
end
CLOSE wc2
DEALLOCATE wc2
Fetch next from wc INTO
@id,
@domicilio,
@pai_nombre,
@prv_nombre,
@loc_nombre,
@codpos,
@tipo_domicilio,
@created
END
CLOSE wc
DEALLOCATE wc
select * from @domicilios where id is not null
--order by id
END
GO
Depends On
2Used By
No items found