我的存储过程用于从表中包含名称的字符串中获取以“,”分隔的ID的字符串值 AUTH_GROUPS
.
例如:
id name
1 role_1
2 role_2
3 role_3
输入为: 'role_1,role_2,role_3'
输出为: '1,2,3'
```
CREATE OR REPLACE PROCEDURE PROCEDURE1(P_ERROR_MSG OUT VARCHAR2, P_ROLE_STRING IN VARCHAR2 ) AS
BEGIN
DECLARE
lvOutPut VARCHAR2(2000);
vId varchar2(1000);
BEGIN
lvOutPut := '';
FOR i IN
(SELECT trim(regexp_substr(P_ROLE_STRING, '[^,]+', 1, LEVEL)) l
FROM dual
CONNECT BY LEVEL <= regexp_count(P_ROLE_STRING, ',')+1
)
LOOP
select id into vId from AUTH_GROUPS where NAME = i; --this line got error 'expression is of wrong type'
lvOutPut := lvOutPut || vId || ',';
END LOOP;
P_ERROR_MSG := lvOutPut;
P_ERROR_MSG := substr(P_ERROR_MSG, 1, LENGTH(P_ERROR_MSG) - 1);
END;
END PROCEDURE1;
但我评论的那行有个错误。我试过了 `i.1` 或者 `i.value` 但还是有错误。
2条答案
按热度按时间mjqavswn1#
您需要使用实际的列名。我是循环句柄名称。
2g32fytz2#