【发布时间】:2016-04-22 21:20:42
【问题描述】:
我想知道如何在存储过程中组合Varchar 变量。我想根据访问级别将电子邮件地址组合成一个变量。我尝试在我的 if 语句中做一些事情。
例如我都试过了:
v_m1_email = Concat(v_m1_email, ' , ' , v_email)
和
v_m1_email = v_m1_email || ' , ' || v_email
我的代码:
CREATE PROCEDURE ALERTEMAIL (OUT p_m1_email VARCHAR(300),
OUT p_m2_email VARCHAR(300),
OUT p_m3_email VARCHAR(300),
OUT p_m4_email VARCHAR(300))
DYNAMIC RESULT SETS 1
P1: BEGIN
DECLARE v_email VARCHAR(50);
DECLARE v_access CHAR(5);
DECLARE v_m1_email VARCHAR(300);
DECLARE v_m2_email VARCHAR(300);
DECLARE v_m3_email VARCHAR(300);
DECLARE v_m4_email VARCHAR(300);
DECLARE SQLSTATE CHAR(5);
DECLARE cursor1 CURSOR WITH RETURN for
SELECT EMAIL,JOB_ID FROM PERSONNEL;
OPEN cursor1;
FETCH cursor1 INTO v_email, v_access;
WHILE (SQLSTATE = '00000') DO
IF v_access = 'Man1' THEN
SET v_m1_email = v_m1_email + ' , ' + v_email;
ELSEIF v_access = 'Man2' THEN
SET v_m2_email = v_m2_email + ' , ' + v_email;
ELSEIF v_access = 'Man3' THEN
SET v_m3_email = v_m3_email + ' , ' + v_email;
ELSEIF v_access = 'Man4' THEN
SET v_m4_email = v_m4_email + ' , ' + v_email;
END IF;
FETCH cursor1 INTO v_email, v_access;
END WHILE;
SET p_m1_email = v_m1_email;
SET p_m2_email = v_m2_email;
SET p_m3_email = v_m3_email;
SET p_m4_email = v_m4_email;
END P1
【问题讨论】:
-
你有什么问题?顺便说一句,
+是算术运算符,它不适用于字符串。 -
我想知道如何在存储过程中组合字符串。提取的值是一个电子邮件地址,我正在寻找一个列表。我想要的输出是 email@email.com、email2@email.com。 @mustaccio
-
试试 concat(contact(expression1,','), expression2).看起来 concat 一次只需要两个参数
标签: sql stored-procedures db2