第一张表KQXM KQID KQIDB KQSJ KQTS
---------- ---------- ---------- -------------- ----------
张三 1 1 01-6月 -09 1
李四 2 2 01-6月 -09 1
王五 3 3 01-6月 -09 1
黄六 1 4 01-6月 -09 1
张三 3 5 02-6月 -09 1
李四 4 6 02-6月 -09 1
王五 1 7 02-6月 -09 1
黄六 3 8 02-6月 -09 1
张三 3 9 03-6月 -09 1
李四 2 10 03-6月 -09 1
王五 1 11 03-6月 -09 1第二张表
KQID KQNR KQIDA
--------- ---------- ----------
4 出差 4
1 签到 1
2 事假 2
3 病假 3包头:
create or replace package kqpack is
type rest is ref cursor;
procedure zjm(str out rest);
end kqpack;包体:
╃ヤ﹎ 薍ゞ(406202818) 10:23:35
create or replace package body kqpack is
procedure zjm(str out rest)
is
v_sql varchar2(2000);
v_kqnr kqnr.kqnr%type;
cursor mycur is select kqnr from kqnr;
begin
v_sql:= 'select a.kqxm 姓名';
open mycur;
fetch mycur into v_kqnr;
while mycur %found loop
v_sql := v_sql ||',sum(decode(b.kqnr,'''||v_kqnr||''',a.kqts)) as ' || v_kqnr;
fetch mycur into v_kqnr;
end loop;
v_sql :=v_sql ||' from kqgl a,kqnr b where a.kqid=b.kqid group by a.kqxm ';
dbms_output.put_line(v_sql);
open str for v_sql;
end;
end;为什么运行的时候要用
var r refcursor;
execute kqpack.zjm(:c);
print r;
其中的 refcursor是什么意思?
---------- ---------- ---------- -------------- ----------
张三 1 1 01-6月 -09 1
李四 2 2 01-6月 -09 1
王五 3 3 01-6月 -09 1
黄六 1 4 01-6月 -09 1
张三 3 5 02-6月 -09 1
李四 4 6 02-6月 -09 1
王五 1 7 02-6月 -09 1
黄六 3 8 02-6月 -09 1
张三 3 9 03-6月 -09 1
李四 2 10 03-6月 -09 1
王五 1 11 03-6月 -09 1第二张表
KQID KQNR KQIDA
--------- ---------- ----------
4 出差 4
1 签到 1
2 事假 2
3 病假 3包头:
create or replace package kqpack is
type rest is ref cursor;
procedure zjm(str out rest);
end kqpack;包体:
╃ヤ﹎ 薍ゞ(406202818) 10:23:35
create or replace package body kqpack is
procedure zjm(str out rest)
is
v_sql varchar2(2000);
v_kqnr kqnr.kqnr%type;
cursor mycur is select kqnr from kqnr;
begin
v_sql:= 'select a.kqxm 姓名';
open mycur;
fetch mycur into v_kqnr;
while mycur %found loop
v_sql := v_sql ||',sum(decode(b.kqnr,'''||v_kqnr||''',a.kqts)) as ' || v_kqnr;
fetch mycur into v_kqnr;
end loop;
v_sql :=v_sql ||' from kqgl a,kqnr b where a.kqid=b.kqid group by a.kqxm ';
dbms_output.put_line(v_sql);
open str for v_sql;
end;
end;为什么运行的时候要用
var r refcursor;
execute kqpack.zjm(:c);
print r;
其中的 refcursor是什么意思?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货