匿名过程

来源:互联网 发布:spark sql使用 编辑:程序博客网 时间:2024/05/21 10:02



--select * from ll_ps_temp12_from11
DECLARE

   CURSOR c_ps12 IS
      SELECT * FROM ll_ps_temp12_from11 pt12;
   v_branch_name    VARCHAR2(200);
   v_department_id  NUMBER;
   p_oa_branch_id   NUMBER;
   p_oa_branch_name VARCHAR2(100);
   p_retcode        VARCHAR2(100);
   p_errmsg         VARCHAR2(100);
   v_count          NUMBER;
   v_email          VARCHAR2(100);
   v_user_id111     NUMBER;
BEGIN
   FOR v_ps12 IN c_ps12 LOOP
      dbms_output.put_line('employee_number=' || v_ps12.employee_number);
      IF v_ps12.employee_number IS NOT NULL THEN
         SELECT COUNT(1)
           INTO v_count
           FROM mms_oa_user       mou,
                mms_oa_user_dept  ud,
                mms_oa_department d
          WHERE (decode(sign(length(mou.user_workid) - 6),
                        -1,
                        '281' || lpad(mou.user_workid,
                                      5,
                                      '0'),
                        mou.user_workid)) = v_ps12.employee_number
            AND ud.account_id = mou.user_id
            AND ud.org_id = d.department_id
            AND d.department_type <> -1;
         IF v_count = 1 THEN
            SELECT mou.user_id,
                   d.department_id,
                   mou.login_id ||'@163.com'
              INTO v_user_id111,
                   v_department_id,
                   v_email
              FROM mms_oa_user       mou,
                   mms_oa_user_dept  ud,
                   mms_oa_department d
             WHERE (decode(sign(length(mou.user_workid) - 6),
                           -1,
                           '281' || lpad(mou.user_workid,
                                         5,
                                         '0'),
                           mou.user_workid)) = v_ps12.employee_number
               AND ud.account_id = mou.user_id
               AND ud.org_id = d.department_id
               AND d.department_type <> -1;
            dbms_output.put_line('v_department_id=' || v_department_id);
        
            mms_approve_hierarchy_pkg.get_oa_branch(p_oa_dept_id     => v_department_id,
                                                    p_oa_branch_id   => p_oa_branch_id,
                                                    p_oa_branch_name => p_oa_branch_name,
                                                    p_retcode        => p_retcode,
                                                    p_errmsg         => p_errmsg);
        
            UPDATE ll_ps_temp12_from11 t12
               SET t12.oa_dept_name   = p_oa_branch_name,
                   t12.branch_id      = p_oa_branch_id,
                   t12.email          = v_email,
                   t12.mms_oa_user_id = v_user_id111
             WHERE t12.employee_number = v_ps12.employee_number;
            dbms_output.put_line('p_oa_branch_name=' || p_oa_branch_name);
         ELSIF v_count = 0 THEN
            dbms_output.put_line('没有匹配数据');
         ELSE
            dbms_output.put_line('属于多个组织employee_number=' || v_ps12.employee_number);
         END IF;
      END IF;
   END LOOP;

END;

------------------

--返回汉字拼音首字母的函数
CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS
V_COMPARE VARCHAR2(100);
V_RETURN VARCHAR2(4000);

FUNCTION F_NLSSORT(P_WORD IN VARCHAR2) RETURN VARCHAR2 AS
BEGIN
RETURN NLSSORT(P_WORD, 'NLS_SORT=SCHINESE_PINYIN_M');
END;
BEGIN
FOR I IN 1..LENGTH(P_NAME) LOOP
V_COMPARE := F_NLSSORT(SUBSTR(P_NAME, I, 1));
IF V_COMPARE >= F_NLSSORT(' 吖 ') AND V_COMPARE <= F_NLSSORT('骜 ') THEN
V_RETURN := V_RETURN || 'a';
ELSIF V_COMPARE >= F_NLSSORT('八 ') AND V_COMPARE <= F_NLSSORT('簿 ') THEN
V_RETURN := V_RETURN || 'b';
ELSIF V_COMPARE >= F_NLSSORT('嚓 ') AND V_COMPARE <= F_NLSSORT('错 ') THEN
V_RETURN := V_RETURN || 'c';
ELSIF V_COMPARE >= F_NLSSORT('咑 ') AND V_COMPARE <= F_NLSSORT('鵽 ') THEN
V_RETURN := V_RETURN || 'd';
ELSIF V_COMPARE >= F_NLSSORT('妸 ') AND V_COMPARE <= F_NLSSORT('樲 ') THEN
V_RETURN := V_RETURN || 'e';
ELSIF V_COMPARE >= F_NLSSORT('发 ') AND V_COMPARE <= F_NLSSORT('猤 ') THEN
V_RETURN := V_RETURN || 'f';
ELSIF V_COMPARE >= F_NLSSORT('旮 ') AND V_COMPARE <= F_NLSSORT('腂 ') THEN
V_RETURN := V_RETURN || 'g';
ELSIF V_COMPARE >= F_NLSSORT('妎 ') AND V_COMPARE <= F_NLSSORT('夻 ') THEN
V_RETURN := V_RETURN || 'h';
ELSIF V_COMPARE >= F_NLSSORT('丌 ') AND V_COMPARE <= F_NLSSORT('攈 ') THEN
V_RETURN := V_RETURN || 'j';
ELSIF V_COMPARE >= F_NLSSORT('咔 ') AND V_COMPARE <= F_NLSSORT('穒 ') THEN
V_RETURN := V_RETURN || 'k';
ELSIF V_COMPARE >= F_NLSSORT('垃 ') AND V_COMPARE <= F_NLSSORT('擽 ') THEN
V_RETURN := V_RETURN || 'l';
ELSIF V_COMPARE >= F_NLSSORT('呒 ') AND V_COMPARE <= F_NLSSORT('椧 ') THEN
V_RETURN := V_RETURN || 'm';
ELSIF V_COMPARE >= F_NLSSORT('拏 ') AND V_COMPARE <= F_NLSSORT('疟 ') THEN
V_RETURN := V_RETURN || 'n';
ELSIF V_COMPARE >= F_NLSSORT('筽 ') AND V_COMPARE <= F_NLSSORT('沤 ') THEN
V_RETURN := V_RETURN || 'o';
ELSIF V_COMPARE >= F_NLSSORT('妑 ') AND V_COMPARE <= F_NLSSORT('曝 ') THEN
V_RETURN := V_RETURN || 'p';
ELSIF V_COMPARE >= F_NLSSORT('七 ') AND V_COMPARE <= F_NLSSORT('裠 ') THEN
V_RETURN := V_RETURN || 'q';
ELSIF V_COMPARE >= F_NLSSORT('亽 ') AND V_COMPARE <= F_NLSSORT('鶸 ') THEN
V_RETURN := V_RETURN || 'r';
ELSIF V_COMPARE >= F_NLSSORT('仨 ') AND V_COMPARE <= F_NLSSORT('蜶 ') THEN
V_RETURN := V_RETURN || 's';
ELSIF V_COMPARE >= F_NLSSORT('侤 ') AND V_COMPARE <= F_NLSSORT('箨 ') THEN
V_RETURN := V_RETURN || 't';
ELSIF V_COMPARE >= F_NLSSORT('屲 ') AND V_COMPARE <= F_NLSSORT('鹜 ') THEN
V_RETURN := V_RETURN || 'w';
ELSIF V_COMPARE >= F_NLSSORT('夕 ') AND V_COMPARE <= F_NLSSORT('鑂 ') THEN
V_RETURN := V_RETURN || 'x';
ELSIF V_COMPARE >= F_NLSSORT('丫 ') AND V_COMPARE <= F_NLSSORT('韵 ') THEN
V_RETURN := V_RETURN || 'y';
ELSIF V_COMPARE >= F_NLSSORT('帀 ') AND V_COMPARE <= F_NLSSORT('咗 ') THEN
V_RETURN := V_RETURN || 'z';
END IF;
END LOOP;
RETURN V_RETURN;
END;

测试一下:
SELECT F_TRANS_PINYIN_CAPITAL('兰ll') FROM DUAL

原创粉丝点击