select name || ',' || department from table;
结果:部门1的John Cooper
为了获得John Cooper的电子邮件,我需要将值彼此分开。要获取电子邮件,我使用以下代码(无需concat即可正常运行)
DECLARE
mail VARCHAR(40);
BEGIN
select email
into mail
FROM table
WHERE NAME = :PX_Employee;
:PX_MAIL := mail;
EXCEPTION
WHEN NO_DATA_FOUND THEN
mail := NULL;
END;
答案 0 :(得分:2)
一个简单的SUBSTR
和INSTR
就可以了。一些注意事项:
NO_DATA_FOUND
,请使用聚合函数(例如MAX
,我已经做到了):
SELECT
将返回其电子邮件地址NO_DATA_FOUND
而是NULL(因此您不必单独处理)begin
select max(t.mail)
into :PX_MAIL
from your_table t
where t.name = substr(:PX_EMPLOYEE, 1, instr(:PX_EMPLOYEE, ',') - 1);
end;
例如:
SQL> with test (px_employee) as
2 (select 'John Cooper, Department 1' from dual)
3 select substr(PX_EMPLOYEE, 1, instr(PX_EMPLOYEE, ',') - 1)
4 from test;
SUBSTR(PX_E
-----------
John Cooper
SQL>
答案 1 :(得分:1)
您可以使用Apex Util函数STRING_TO_TABLE再次拆分字符串并以这种方式提取名称。
DECLARE
l_vc_arr2 APEX_APPLICATION_GLOBAL.VC_ARR2;
mail VARCHAR(40);
BEGIN
l_vc_arr2 := APEX_UTIL.STRING_TO_TABLE('John Cooper, Department1', ',');
BEGIN select email into mail FROM table WHERE NAME = l_vc_arr2(1);
END;