가 나는 varchar
(IP 주소)를 받아 테이블 값을 반환하는 함수 (도시, 국가, TIME_ZONE을 ...)SQL Server 매개 변수 테이블 값은
ALTER function [dbo].[GQuery2](@ipAddress varchar(16))
returns @t table (
[country_name] [nvarchar](64) ,
[region_name] [nvarchar](128) ,
[city_name] [nvarchar](128),
[latitude] [float],
[longitude] [float] ,
[zip_code] [nvarchar](30) ,
[time_zone] [nvarchar](8)
)
as
begin
insert into @t ([country_name]
,[region_name]
,[city_name]
,[latitude]
,[longitude]
,[zip_code]
,[time_zone])
select [country_name]
,[region_name]
,[city_name]
,[latitude]
,[longitude]
,[zip_code]
,[time_zone]
from [pcap].[dbo].ip2loc
where ip_from = (
select max(ip_from)
from [pcap].[dbo].ip2loc
where ip_from <= [dbo].IP2INT(@ipAddress)
)
and ip_to = (
select min(ip_to)
from [pcap].[dbo].ip2loc
where ip_to >= [dbo].IP2INT(@ipAddress)
)
RETURN
end
문제가 만들어 난 단지 수 이 형식으로 함수를 호출 :
SELECT * FROM [dbo].GQuery2('89.98.0.0')
을하고 새 테이블을 반환
country_name region_name city_name latitude longitude zip_code time_zone
NETHERLANDS NOORD-HOLLAND AMSTERDAM 52.37403 4.88969 1089 +02:00
그리고 나는 DimLocation
테이블이 스키마가
UPDATE DimLocation d, [dbo].GQuery2(d.ip) g
SET d.city_name = g.city_name, d.country_name = g.country_name ....
(이론적으로)이 같은 쿼리를 만들고 싶어 :
IP, country_name, region_name, city_name, latitude, longitude, zip_code, time_zone
IP 주소에 값이 다른 열이 NULL입니다을하고 난을 전달해야 IP 주소가 DimLocation
에서 GQuery2(ip)
으로 누락 된 데이터를 얻으려면
질문은 select
문에서 테이블 반환 함수를 사용하는 방법입니까?
아무것도 업데이트 pcap.dbo.DimLocation 설정 CITY_NAME = g.city_name는 바인딩 할 수 없습니다. – teter