oracle insert into select 空值,insert into select 诡异问题 insert 进去的不是select的值

该段代码定义了一个名为get_email_alias的函数,用于根据输入的全名生成邮箱别名。函数首先处理输入的名字,如果包含逗号和空格,则将名字拆分为姓和名,并移除多余的空格。接着,它检查生成的别名是否已存在于Gmail代理列表中,如果存在,会在别名后添加序号以避免重复。最后返回生成的唯一邮箱别名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本帖最后由 yingrihong 于 2012-1-19 16:50 编辑

FUNCTION get_email_alias

( agent_name_in IN STG_ED_AGENT.agent_name%TYPE

)

RETURN VARCHAR

IS

v_err_code                ERROR_LOG.err_code%TYPE;

v_err_message             ERROR_LOG.err_message%TYPE := NULL;

v_err_remark              ERROR_LOG.err_remark%TYPE := NULL;

v_name                    ED_ASSIGN_EMAIL_ALIAS.agent_name%TYPE;

v_lastname                VARCHAR2(30);

v_firstname               VARCHAR2(30);

v_midname                 VARCHAR2(30);

v_firstnametrim           VARCHAR2(30);

v_midnametrim             VARCHAR2(30);

v_len                     NUMBER;

v_idx                     NUMBER;

v_idx2                    NUMBER;

v_execute_ok              BOOLEAN := TRUE;

v_result_name             ED_ASSIGN_EMAIL_ALIAS.email_alias%TYPE;

v_return                  BOOLEAN := TRUE;

e_trim_space_exception    EXCEPTION;

v_dup_count                           NUMBER;

v_alias_out                           STG_ED_AGENT.EMAIL_ALIAS%TYPE;

v_dmn_firstname                   STG_ED_AGENT.DMN_FirstName%TYPE;

v_dmn_lastname                              STG_ED_AGENT.DMN_LastName%TYPE;

v_temp                    VARCHAR2(60);

BEGIN

v_name := TRIM(agent_name_in);        v_len := LENGTH(v_name);

IF v_name LIKE '% %,%' THEN

-- Case have comma and space;  Chan Tai Man, Peter -> Peter.Chan

v_idx := INSTR(v_name, ' ', 1, 1);

v_lastname := SUBSTR(v_name, 1, v_idx-1);

v_idx := INSTR(v_name, ',', 1, 1);

v_midname := SUBSTR(v_name, v_idx+1, v_len);

v_midnametrim := REPLACE(v_midname, ' ', '');

v_alias_out     := v_midnametrim || '.' || v_lastname ;

v_dmn_firstname := trim(v_midname);

v_dmn_lastname         := trim(v_lastname);

--add by kobe wang 2012-01-09 start

IF if_in_gmail_agent_list(v_alias_out) = 1 THEN

v_alias_out := v_midnametrim || '.tm.' || v_lastname;

v_temp := v_alias_out;

--if Peter.tm.Chan exists then Peter.tm.Chan2

--if Peter.tm.Chan2 exists then Peter.tm.Chan3 ...

v_idx := 1;

WHILE if_in_gmail_agent_list(v_alias_out) = 1

LOOP

v_idx := v_idx + 1;

v_alias_out := v_temp || v_idx;

END LOOP;

END IF;

--add by kobe wang 2012-01-09 end

END IF;

RETURN v_alias_out;

EXCEPTION

WHEN OTHERS THEN

RETURN NULL;

END get_email_alias;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值