地址格式为: 省(自治区,直辖市)、市、区。
直辖市的地址格式为, 北京市北京市海淀区xxxxx。 若是北京市海淀区xxx,自己改改就可以了
采用的是笨办法,穷举。
涉及的两个主要内置函数。
查找str2在str1出现的位置。num是出现的次数,默认是1。例如num=2,就是str2在str1第二次出现的位置。start_position是起始的位置下标,默认是从头开始即 1。
若str2在str1找不到,则返回0
instr('123456', '2') -- 结果是: 2. 位置索引值是从1开始
instr('123456', '2' , 2) -- 结果是0 , 因为2 只出现一次
instr('新疆维吾尔族自治区','自治区') -- 结果是7
截取字符串, 从str1 的 start_position开始截取, 截取长度是 length。length不填就是截取到字符串的最右边。
例如 start_position=2, length=3, str1= ‘’12345678‘’
substr('123456', 2, 3) -- 结果是: 234. 因为postgres是下标索引是1开始
substr('123456', 1, 3) -- 结果是: 123. 因为postgres是下标索引是1开始
substr('123456', 0, 3) -- 结果是: 123. 0也当成1
substr('123456', 2) -- 结果是: 23456. 长度值不填,默认就是截取到最右边
substr('新疆维吾尔族自治区',1 ,instr('新疆维吾尔族自治区','自治区'))
-- substr('新疆维吾尔族自治区',1 , 7)
-- '新疆维吾尔族自'
substr('新疆维吾尔族自治区',1 ,instr('新疆维吾尔族自治区','自治区')+2)
-- substr('新疆维吾尔族自治区',1 , 7+2)
-- '新疆维吾尔族自治区'
CREATE OR REPLACE FUNCTION dm.f_get_province(i_address character varying(500))
RETURNS character varying
LANGUAGE plpgsql
STABLE NOT FENCED SHIPPABLE -- DWS特有的,如果你是postgres就不用
AS $$
DECLARE
p_province VARCHAR2(500);
text_var1 text;
text_var2 text;
text_var3 text;
BEGIN
SELECT
CASE WHEN instr(i_address,'省') >0 THEN substr(i_address,1,instr(i_address,'省'))
WHEN instr(i_address,'自治区') >0 THEN substr(i_address,1,instr(i_address,'自治区')+2)
WHEN instr(i_address,'特别行政区') >0 THEN substr(i_address,1,instr(i_address,'特别行政区')+4)
WHEN instr(i_address,'北京市') > 0 then substr(i_address,1, instr(i_address, '北京市')+2)
WHEN instr(i_address,'天津市') > 0 then substr(i_address,1, instr(i_address, '天津市')+2)
WHEN instr(i_address,'上海市') > 0 then substr(i_address,1, instr(i_address, '上海市')+2)
WHEN instr(i_address,'重庆市') > 0 then substr(i_address,1, instr(i_address, '重庆市')+2)
ELSE i_address
END PROVINCE INTO p_province ;
RETURN (p_province) ;
EXCEPTION
WHEN others THEN
GET STACKED DIAGNOSTICS text_var1 = RETURNED_SQLSTATE ,
text_var2 = MESSAGE_TEXT ,
text_var3 = PG_EXCEPTION_DETAIL;
RAISE NOTICE E'--- [ 已处理的异常代码_RETURNED_SQLSTATE ] : %', text_var1; -- 记录异常信息
RAISE NOTICE E'--- [ 已处理的异常简要信息_MESSAGE_TEXT ] : %', text_var2;
RAISE NOTICE E'--- [ 已处理的异常详细信息_PG_EXCEPTION_DETAIL ] : %', text_var3;
RETURN ('') ; -- 地址异常, 返回空 -- 解析异常, 直接返回空字符串
END $$
;
------- 获取城市 , 直辖市,地级市,地区、自治州、盟
CREATE OR REPLACE FUNCTION dm.f_get_city(i_address character varying(500))
RETURNS character varying
LANGUAGE plpgsql
STABLE NOT FENCED SHIPPABLE
AS $$
DECLARE
p_city VARCHAR2(500);
text_var1 text;
text_var2 text;
text_var3 text;
BEGIN
SELECT
CASE WHEN instr(i_address,'特别行政区') >0 THEN case when instr(i_address,'香港特别行政区') > 0 THEN '香港特别行政区'
when instr(i_address,'澳门特别行政区') > 0 THEN '澳门特别行政区'
else i_address
end
WHEN instr(i_address,'北京市') > 0 then '北京市'
WHEN instr(i_address,'天津市') > 0 then '天津市'
WHEN instr(i_address,'上海市') > 0 then '上海市'
WHEN instr(i_address,'重庆市') > 0 then '重庆市'
-- 盟是内蒙古特有, 地区则是 西藏和新疆
WHEN instr(i_address,'自治区') > 0 THEN case when instr(i_address,'自治州') > 0 THEN substr(i_address, instr(i_address,'自治区') + 3, instr(i_address,'自治州')+3 - (instr(i_address,'自治区')+3))
-- 确保是 盟名,而不是,镇,乡村,街道的名字, 即自治区和盟之间 没有其他 地级市级行政区的 名字, 市,地区
when instr(i_address,'盟') > 0
and instr(substr(i_address, instr(i_address,'自治区')+3,instr(i_address,'盟')+1 - (instr(i_address,'自治区')+3)),'市') = 0
and instr(substr(i_address, instr(i_address,'自治区')+3,instr(i_address,'盟')+1 - (instr(i_address,'自治区')+3)),'地区') = 0 THEN substr(i_address, instr(i_address,'自治区') + 3, instr(i_address,'盟')+1 - (instr(i_address,'自治区')+3))
-- 确保是 地区名,而不是,镇,乡村,街道的名字, 即自治区和地区之间 没有其他 地级市级行政区的 名字, 市,盟
when instr(i_address,'地区') > 0
and instr(substr(i_address, instr(i_address,'自治区')+3,instr(i_address,'地区')+2 - (instr(i_address,'自治区')+3)),'市') = 0
and instr(substr(i_address, instr(i_address,'自治区')+3,instr(i_address,'地区')+2 - (instr(i_address,'自治区')+3)),'盟') = 0 THEN substr(i_address, instr(i_address,'自治区') + 3, instr(i_address,'地区')+2 - (instr(i_address,'自治区')+3))
-- 确保是 地级市名,而不是,镇,乡村,街道的名字, 即自治区和市 之间 没有其他 地级市级行政区的 名字, 地区,盟
when instr(i_address,'市') > 0
and instr(substr(i_address, instr(i_address,'自治区')+3,instr(i_address,'市')+1 - (instr(i_address,'自治区')+3)),'地区') = 0
and instr(substr(i_address, instr(i_address,'自治区')+3,instr(i_address,'市')+1 - (instr(i_address,'自治区')+3)),'盟') = 0 THEN substr(i_address,instr(i_address,'自治区') + 3, instr(i_address,'市')+1 - (instr(i_address,'自治区')+3))
else i_address
end
WHEN instr(i_address,'省') > 0 THEN case when instr(i_address,'自治州') > 0 THEN substr(i_address,instr(i_address,'省') + 1, instr(i_address,'自治州')+3 - (instr(i_address,'省')+1))
-- 确保是 地区名,而不是,镇,乡村,街道的名字, 即省和地区之间 没有其他 地级市级行政区的 名字, 市
-- 地区 只有黑龙江省有
when instr(i_address,'地区') > 0 and instr(i_address,'省') > 0
and instr(substr(i_address, instr(i_address,'省')+1,instr(i_address,'地区')+2 - (instr(i_address,'省')+1)),'市') = 0 THEN substr(i_address,instr(i_address,'省') + 1, instr(i_address,'地区')+2 - (instr(i_address,'省')+1))
-- 确保是 市名,而不是,镇,乡村,街道的名字, 即省和地区之间 没有其他 地区级行政区的 名字, 地区
when instr(i_address,'市') > 0
and instr(substr(i_address, instr(i_address,'省')+1,instr(i_address,'市')+1 - (instr(i_address,'省')+1)),'地区') = 0 THEN substr(i_address,instr(i_address,'省') + 1, instr(i_address,'市')+1 - (instr(i_address,'省')+1))
else i_address
end
ELSE i_address
END city INTO p_city ;
RETURN (p_city) ;
EXCEPTION
WHEN others THEN
GET STACKED DIAGNOSTICS text_var1 = RETURNED_SQLSTATE ,
text_var2 = MESSAGE_TEXT ,
text_var3 = PG_EXCEPTION_DETAIL;
RAISE NOTICE E'--- [ 已处理的异常代码_RETURNED_SQLSTATE ] : %', text_var1; -- 记录异常信息
RAISE NOTICE E'--- [ 已处理的异常简要信息_MESSAGE_TEXT ] : %', text_var2;
RAISE NOTICE E'--- [ 已处理的异常详细信息_PG_EXCEPTION_DETAIL ] : %', text_var3;
RETURN ('') ; -- 地址异常, 返回空
END $$
;
------- 获取县级 , 市辖区、县级市、县、自治县、旗、自治旗、特区、林区
------- 上级行政 直辖市,地级市,地区、自治州、盟
CREATE OR REPLACE FUNCTION dm.f_get_county(i_address character varying(500))
RETURNS character varying
LANGUAGE plpgsql
STABLE NOT FENCED SHIPPABLE
AS $$
DECLARE
p_county VARCHAR2(500);
text_var1 text;
text_var2 text;
text_var3 text;
BEGIN
SELECT
CASE WHEN instr(i_address,'神农架林区') > 0 THEN '神农架林区'
WHEN instr(i_address,'六枝特区') > 0 THEN '六枝特区'
-- 如果是 北京市北京市xx区的格式
WHEN instr(i_address,'北京市',1,2) > 0 then case when instr(i_address,'区') > 0 THEN substr(i_address,instr(i_address,'北京市',1,2) + 3, instr(i_address,'区') + 1 - (instr(i_address,'北京市',1,2) + 3))
else i_address
end
-- 如果是 北京市xx区的格式
WHEN instr(i_address,'北京市') > 0 then case when instr(i_address,'区') > 0 THEN substr(i_address,instr(i_address,'北京市') + 3, instr(i_address,'区') + 1 - (instr(i_address,'北京市') + 3))
else i_address
end
WHEN instr(i_address,'天津市',1,2) > 0 then case when instr(i_address,'区') > 0 THEN substr(i_address,instr(i_address,'天津市',1,2) + 3, instr(i_address,'区') + 1 - (instr(i_address,'天津市',1,2) + 3))
else i_address
end
WHEN instr(i_address,'天津市') > 0 then case when instr(i_address,'区') > 0 THEN substr(i_address,instr(i_address,'天津市') + 3, instr(i_address,'区') + 1 - (instr(i_address,'天津市') + 3))
else i_address
end
WHEN instr(i_address,'上海市',1,2) > 0 then case when instr(i_address,'区') > 0 THEN substr(i_address,instr(i_address,'上海市',1,2) + 3, instr(i_address,'区') + 1 - (instr(i_address,'上海市',1,2) + 3))
else i_address
end
WHEN instr(i_address,'上海市') > 0 then case when instr(i_address,'区') > 0 THEN substr(i_address,instr(i_address,'上海市') + 3, instr(i_address,'区') + 1 - (instr(i_address,'上海市') + 3))
else i_address
end
WHEN instr(i_address,'香港特别行政区') > 0 then case when instr(i_address,'区',1,2) > 0 THEN substr(i_address,instr(i_address,'香港特别行政区',1,2) + 7, instr(i_address,'区',1,2) + 1 - (instr(i_address,'香港特别行政区',1,2) + 7))
else i_address
end
WHEN instr(i_address,'澳门特别行政区') > 0 then case when instr(i_address,'区',1,2) > 0 THEN substr(i_address,instr(i_address,'澳门特别行政区',1,2) + 7, instr(i_address,'区',1,2) + 1 - (instr(i_address,'澳门特别行政区',1,2) + 7))
else i_address
end
WHEN instr(i_address,'重庆市',1,2) > 0 then case when instr(i_address,'自治县') > 0 THEN substr(i_address,instr(i_address,'重庆市',1,2) + 3, instr(i_address,'自治县') + 3 - (instr(i_address,'重庆市',1,2) + 3))
-- 确保是县级县名,而不是,镇,乡村,街道的名字, 即确保市和县之间 没有其他县级行政区的 名字, 区
when instr(i_address,'县') > 0
and instr(substr(i_address, instr(i_address,'重庆市',1,2)+3,instr(i_address,'县')+1 - (instr(i_address,'重庆市',1,2)+3)),'区') = 0 THEN substr(i_address,instr(i_address,'重庆市',1,2) + 3, instr(i_address,'县') + 1 - (instr(i_address,'重庆市',1,2) + 3))
-- 确保是县级区名,而不是,镇,乡村,街道的名字, 即确保市和区之间 没有其他县级行政区的 名字, 县
when instr(i_address,'区') > 0
and instr(substr(i_address, instr(i_address,'重庆市',1,2)+3,instr(i_address,'区')+1 - (instr(i_address,'重庆市',1,2)+3)),'县') = 0 THEN substr(i_address,instr(i_address,'重庆市',1,2) + 3, instr(i_address,'区') + 1 - (instr(i_address,'重庆市',1,2) + 3))
else i_address
end
WHEN instr(i_address,'重庆市') > 0 then case when instr(i_address,'自治县') > 0 THEN substr(i_address,instr(i_address,'重庆市') + 3, instr(i_address,'自治县') + 3 - (instr(i_address,'重庆市') + 3))
-- 确保是县级县名,而不是,镇,乡村,街道的名字, 即确保市和县之间 没有其他县级行政区的 名字, 区
when instr(i_address,'县') > 0
and instr(substr(i_address, instr(i_address,'重庆市')+3,instr(i_address,'县')+1 - (instr(i_address,'重庆市')+3)),'区') = 0 THEN substr(i_address,instr(i_address,'重庆市') + 3, instr(i_address,'县') + 1 - (instr(i_address,'重庆市') + 3))
-- 确保是县级区名,而不是,镇,乡村,街道的名字, 即确保市和区之间 没有其他县级行政区的 名字, 县
when instr(i_address,'区') > 0
and instr(substr(i_address, instr(i_address,'重庆市')+3,instr(i_address,'区')+1 - (instr(i_address,'重庆市')+3)),'县') = 0 THEN substr(i_address,instr(i_address,'重庆市') + 3, instr(i_address,'区') + 1 - (instr(i_address,'重庆市') + 3))
else i_address
end
-- 内蒙古自治区 特有 ( 目前下辖 旗,县级市,县)
WHEN instr(i_address,'盟') > 0 and instr(i_address,'内蒙古自治区') > 0 then
case when instr(i_address,'县') > 0
-- 确保是 县级县名,而不是,镇,乡村,街道的名字, 即地区和县之间 没有其他县级行政区的 名字, 市,旗
and instr(substr(i_address, instr(i_address,'盟')+1,instr(i_address,'县')+1 - (instr(i_address,'盟')+1)),'市') = 0
and instr(substr(i_address, instr(i_address,'盟')+1,instr(i_address,'县')+1 - (instr(i_address,'盟')+1)),'旗') = 0 THEN substr(i_address,instr(i_address,'盟') + 1, instr(i_address,'县')+1 - (instr(i_address,'盟')+1))
-- 确保是 县级市名,而不是,镇,乡村,街道的名字, 即地区和县之间 没有其他县级行政区的 名字, 县,旗
when instr(i_address,'市') > 0
and instr(substr(i_address, instr(i_address,'盟')+1,instr(i_address,'市')+1 - (instr(i_address,'盟')+1)),'县') = 0
and instr(substr(i_address, instr(i_address,'盟')+1,instr(i_address,'市')+1 - (instr(i_address,'盟')+1)),'旗') = 0 THEN substr(i_address,instr(i_address,'盟') + 1, instr(i_address,'市')+1 - (instr(i_address,'盟')+1))
-- 确保是 县级旗名,而不是,镇,乡村,街道的名字, 即地区和县之间 没有其他县级行政区的 名字, 县,市
when instr(i_address,'旗') > 0
and instr(substr(i_address, instr(i_address,'盟')+1,instr(i_address,'市')+1 - (instr(i_address,'盟')+1)),'市') = 0
and instr(substr(i_address, instr(i_address,'盟')+1,instr(i_address,'市')+1 - (instr(i_address,'盟')+1)),'县') = 0 THEN substr(i_address,instr(i_address,'盟') + 1, instr(i_address,'旗')+1 - (instr(i_address,'盟')+1))
else i_address
end
-- 黑龙江省和 西藏,新疆自治区
-- 黑龙江省_(下辖 区,县,县级市), 区,县,县级市名 无其他行政等级名
-- 自治区_(县,县级市,自治县), 县,县级市,自治县 并无其他行政等级名
WHEN instr(i_address,'地区') >0 THEN case when instr(i_address,'自治县') > 0 THEN substr(i_address,instr(i_address,'地区') + 2, instr(i_address,'自治县')+3 - (instr(i_address,'地区')+2))
-- 确保是 县级县名,而不是,镇,乡村,街道的名字, 即地区和县之间 没有其他县级行政区的 名字, 市,区
when instr(i_address,'县') > 0
and instr(substr(i_address, instr(i_address,'地区')+2,instr(i_address,'县')+1 - (instr(i_address,'地区')+2)),'市') = 0
and instr(substr(i_address, instr(i_address,'地区')+2,instr(i_address,'县')+1 - (instr(i_address,'地区')+2)),'区') = 0 THEN substr(i_address,instr(i_address,'地区') + 2, instr(i_address,'县')+1 - (instr(i_address,'地区')+2))
-- 确保是 县级市名,而不是,镇,乡村,街道的名字, 即地区和县级市之间 没有其他县级行政区的 名字, 县,区
when instr(i_address,'市') > 0
and instr(substr(i_address, instr(i_address,'地区')+2,instr(i_address,'市')+1 - (instr(i_address,'地区')+2)),'县') = 0
and instr(substr(i_address, instr(i_address,'地区')+2,instr(i_address,'市')+1 - (instr(i_address,'地区')+2)),'区') = 0 THEN substr(i_address,instr(i_address,'地区') + 2, instr(i_address,'市')+1 - (instr(i_address,'地区')+2))
-- 确保是 县级区名,而不是,镇,乡村,街道的名字, 即地区和县级区之间 没有其他县级行政区的 名字, 县,市
when instr(i_address,'区',1,2) > 0 and instr(i_address,'黑龙江省') > 0
and instr(substr(i_address, instr(i_address,'地区')+2,instr(i_address,'区',1,2)+1 - (instr(i_address,'地区')+2)),'县') = 0
and instr(substr(i_address, instr(i_address,'地区')+2,instr(i_address,'区',1,2)+1 - (instr(i_address,'地区')+2)),'市') = 0 THEN substr(i_address,instr(i_address,'地区') + 2, instr(i_address,'区',1,2)+1 - (instr(i_address,'地区')+2))
else i_address
end
-- 省 和 新疆自治区 (目前下辖,县,自治县,县级市)
WHEN instr(i_address,'自治州') > 0 THEN case when instr(i_address,'自治县') > 0 THEN substr(i_address,instr(i_address,'自治州') + 3, instr(i_address,'自治县')+3 - (instr(i_address,'自治州')+3))
-- 确保是 县级县名,而不是,镇,乡村,街道的名字, 即地区和县之间 没有其他县级行政区的 名字, 市
when instr(i_address,'县') > 0
and instr(substr(i_address, instr(i_address,'自治州')+3,instr(i_address,'县')+1 - (instr(i_address,'自治州')+3)),'市') = 0 THEN substr(i_address,instr(i_address,'自治州') + 3, instr(i_address,'县')+1 - (instr(i_address,'自治州')+3))
-- 确保是 县级市名,而不是,镇,乡村,街道的名字, 即地区和市之间 没有其他县级行政区的 名字, 县
when instr(i_address,'市') > 0
and instr(substr(i_address, instr(i_address,'自治州')+3,instr(i_address,'市')+1 - (instr(i_address,'自治州')+3)),'县') = 0 THEN substr(i_address,instr(i_address,'自治州') + 3, instr(i_address,'市')+1 - (instr(i_address,'自治州')+3))
else i_address
end
WHEN instr(i_address,'市') > 0 THEN case when instr(i_address,'自治县') > 0 THEN substr(i_address,instr(i_address,'市') + 1, instr(i_address,'自治县')+3 - (instr(i_address,'市')+1))
when instr(i_address,'自治旗') > 0 and instr(i_address,'内蒙古自治区') > 0 THEN substr(i_address,instr(i_address,'市') + 1, instr(i_address,'自治旗')+3 - (instr(i_address,'市')+1))
-- 确保是县级旗名,而不是,镇,乡村,街道的名字, 即确保市和旗之间 没有其他县级行政区的 名字, 市,县,区
when instr(i_address,'旗') > 0 and instr(i_address,'内蒙古自治区') > 0
and instr(substr(i_address, instr(i_address,'市')+1,instr(i_address,'旗') - instr(i_address,'市')),'市') = 0
and instr(substr(i_address, instr(i_address,'市')+1,instr(i_address,'旗') - instr(i_address,'市')),'县') = 0
and instr(substr(i_address, instr(i_address,'市')+1,instr(i_address,'旗') - instr(i_address,'市')),'区') = 0 THEN substr(i_address,instr(i_address,'市') + 1, instr(i_address,'旗')+1 - (instr(i_address,'市')+1))
-- 确保是县级县名,而不是,镇,乡村,街道的名字, 即确保市和县之间 没有其他县级行政区的 名字, 市,区 ,旗
when instr(i_address,'县') > 0
and instr(substr(i_address, instr(i_address,'市')+1,instr(i_address,'县') - instr(i_address,'市')),'市') = 0
and instr(substr(i_address, instr(i_address,'市')+1,instr(i_address,'县') - instr(i_address,'市')),'区') = 0
and instr(substr(i_address, instr(i_address,'市')+1,instr(i_address,'县') - instr(i_address,'市')),'旗') = 0 THEN substr(i_address,instr(i_address,'市') + 1, instr(i_address,'县')+1 - (instr(i_address,'市')+1))
when instr(i_address,'辉县市') > 0 THEN '辉县市'
-- 确保是县级市名,而不是,镇,乡村,街道的名字, 即确保市和市之间 没有其他县级行政区的 名字, 区 ,县 旗
when instr(i_address,'市',1,2) > 0
and instr(substr(i_address, instr(i_address,'市',1,1)+1,(instr(i_address,'市',1,2)-instr(i_address,'市'))),'区') = 0
and instr(substr(i_address, instr(i_address,'市',1,1)+1,(instr(i_address,'市',1,2)-instr(i_address,'市'))),'县') = 0
and instr(substr(i_address, instr(i_address,'市',1,1)+1,(instr(i_address,'市',1,2)-instr(i_address,'市'))),'旗') = 0 THEN substr(i_address,instr(i_address,'市',1,1) + 1, instr(i_address,'市',1,2)+1 - (instr(i_address,'市',1,1)+1))
-- 确保是县级区名(自治区),而不是,镇,乡村,街道的名字, 即确保市和区之间 没有其他县级行政区的 名字, 县 旗,市
when instr(i_address,'自治区') > 0 and instr(i_address,'区',1,2) > 0
and instr(substr(i_address, instr(i_address,'市')+1,(instr(i_address,'区',1,2)-instr(i_address,'市'))),'市') = 0
and instr(substr(i_address, instr(i_address,'市')+1,(instr(i_address,'区',1,2)-instr(i_address,'市'))),'县') = 0
and instr(substr(i_address, instr(i_address,'市')+1,(instr(i_address,'区',1,2)-instr(i_address,'市'))),'旗') = 0 THEN substr(i_address,instr(i_address,'市') + 1, instr(i_address,'区',1,2)+1 - (instr(i_address,'市')+1))
-- 确保是县级区名(省),而不是,镇,乡村,街道的名字, 即确保市和区之间 没有其他县级行政区的 名字, 县 旗,市
when instr(i_address,'省') > 0 and instr(i_address,'区') and instr(i_address,'自治区') = 0
and instr(substr(i_address, instr(i_address,'市')+1,(instr(i_address,'区')-instr(i_address,'市'))),'市') = 0
and instr(substr(i_address, instr(i_address,'市')+1,(instr(i_address,'区')-instr(i_address,'市'))),'县') = 0
and instr(substr(i_address, instr(i_address,'市')+1,(instr(i_address,'区')-instr(i_address,'市'))),'旗') = 0 THEN substr(i_address,instr(i_address,'市') + 1, instr(i_address,'区')+1 - (instr(i_address,'市')+1))
else i_address
end
ELSE i_address
END county INTO p_county ;
RETURN (p_county) ;
EXCEPTION
WHEN others THEN
GET STACKED DIAGNOSTICS text_var1 = RETURNED_SQLSTATE ,
text_var2 = MESSAGE_TEXT ,
text_var3 = PG_EXCEPTION_DETAIL;
RAISE NOTICE E'--- [ 已处理的异常代码_RETURNED_SQLSTATE ] : %', text_var1; -- 记录异常信息
RAISE NOTICE E'--- [ 已处理的异常简要信息_MESSAGE_TEXT ] : %', text_var2;
RAISE NOTICE E'--- [ 已处理的异常详细信息_PG_EXCEPTION_DETAIL ] : %', text_var3;
RETURN ('') ; -- 地址异常, 返回空
END $$
;