Oracle 在函数中使用带参的游标
create or replace function MyContact(Operation_Id in varchar2) return varchar2
as
result varchar2(1000);
cursor cur (p varchar2) is
select t.box_type||'*'||count(1) as box from ops_seai_asn_det t where t.operation_id=p
--被网上的文章误导了很久 此处不能写成
--cursor cur is
-- select t.box_type||'*'||count(1) as box from ops_seai_asn_det t where t.operation_id=Operation_Id
-- group by box_type;
--上述写法外部参数是进入不了游标的 且不会报错 会把所有的记录查询出来
c_row cur%rowtype;
begin for c_row in cur(Operation_Id) loop
--此处在游标FOR循环中使用查询
result :=result || c_row.box || ' ';
--Oracle中字符连接使用||,而sql server中用+
end loop;
result := rtrim(result,' ');
--去掉最后一个空格,还有Oracle中的赋值前面没有set
return result;
end ;

浙公网安备 33010602011771号