Sql 基于逗号分隔字符串构建数组-oracle
我想基于逗号分隔的字符串构建一个数组。但是我不能再继续了 端环 对于数组中的j_rolecode.first。。数组_rolecode.last 环路 DBMS_OUTPUT.put_line(数组_rolecode.role); 端环; 结束;Sql 基于逗号分隔字符串构建数组-oracle,sql,oracle,plsql,oracle10g,Sql,Oracle,Plsql,Oracle10g,我想基于逗号分隔的字符串构建一个数组。但是我不能再继续了 端环 对于数组中的j_rolecode.first。。数组_rolecode.last 环路 DBMS_OUTPUT.put_line(数组_rolecode.role); 端环; 结束; 结束必须将数组声明为数组,而不是记录。循环中似乎有错误,因为字符串的最后一部分没有插入到数组中,所以应该检查它。但是,以下是工作脚本: 副本 DECLARE type rol_type is record (role MMSTROLEHDR.R
结束代码>必须将数组声明为数组,而不是记录。循环中似乎有错误,因为字符串的最后一部分没有插入到数组中,所以应该检查它。但是,以下是工作脚本: 副本
DECLARE
type rol_type is record
(role MMSTROLEHDR.ROLECODE%TYPE) ;
array_rolecode rol_type;
vl_prmval VARCHAR2 (4000) := '2,3,4';
vl_pos NUMBER;
BEGIN
WHILE (INSTR (vl_prmval, ',') > 0)
LOOP
vl_pos := INSTR (vl_prmval, ',');
--vl_cnt := vl_cnt + 1;
array_rolecode.role := SUBSTR (vl_prmval, 1, vl_pos - 1);
vl_prmval := SUBSTR (vl_prmval, vl_pos + 1);
DECLARE
type rol_type is record
(role MMSTROLEHDR.ROLECODE%TYPE) ;
type rol_arr is table of rol_type
index by binary_integer;
--array_rolecode rol_type;
array_rolecode rol_arr;
vl_prmval VARCHAR2 (4000) := '2,3,4';
vl_pos NUMBER := 0;
BEGIN
WHILE (INSTR (vl_prmval, ',') > 0)
LOOP
vl_pos := INSTR (vl_prmval, ',');
--vl_cnt := vl_cnt + 1;
array_rolecode(NVL(array_rolecode.last+1,1)).role := SUBSTR (vl_prmval, 1, vl_pos - 1);
vl_prmval := SUBSTR (vl_prmval, vl_pos + 1);
END LOOP;
FOR j IN array_rolecode.first .. array_rolecode.last
LOOP
DBMS_OUTPUT.put_line (array_rolecode(j).role);
END LOOP;
END;