DECLARE
cursor outs is
SELECT SID ,PUNISH_KIND,PUNISH_KIND_NAME FROM SUVISION_SITUATION WHERE sid='b145774a-0084-4f3e-9cd2-4758458e8f71';
cursor ins is
select COLUMN_VALUE from table(split_string('0,6,3',','));
temp varchar2(100);
BEGIN FOR one_out IN outs LOOP
for one_ins in ins LOOP
SELECT decode(one_ins,'7','警告','0','罚款','6','没收违法所得','1','责令停产停业','2','暂扣或吊销许可证','5','行政拘 留','3','法律、行政法规规定的其他行政处罚','') AS STR INTO temp FROM DUAL;
SYS.DBMS_OUTPUT.PUT_LINE(temp||',');
end loop ;
update SUVISION_SITUATION
set PUNISH_KIND_NAME= temp
where SID = one_out.SID;
commit;
end loop;
end;
现在一直提示65000 ORA-06550: 第 11 行, 第 23 列: PLS-00382: 表达式类型错误,问题位置是decode后的参数one_ins,请问这个one_ins应该如何取值?我应该如何取出one_ins所代表的字段的字符串?
你需要声明一个记录类型来接收游标的值
再把这个记录作为实参就可以了