[PHP]
试试!
create or replace procedure SYS_bodby(P_XTBH varchar2,
P_DBLINK varchar2,
P_RQZD VARCHAR2,
C out ZSP_DBZ0001.cur)
is
v_lssjbody varchar2(4000);
v_lsSJSEL varchar2(4000);
v_QXSEL varchar2(8000);
v_SJSEL varchar2(8000);
V_SQL VARCHAR2(8000);
V_SJJMC VARCHAR2(30);
V_JCDM DBZ0010.JCDM%TYPE;
V_JCMC DBZ0010.JCMC%TYPE;
V_CLDM DBZ0010.CLDM%TYPE;
V_QX1 VARCHAR2(400);
V_SJ1 VARCHAR2(400);
V_COUNT NUMBER(4);
CURSOR CUR_SJJMC IS
SELECT SJJMC FROM DBZ0010 WHERE XTBH = P_XTBH GROUP BY SJJMC;
CURSOR CUR_JCDM(V_SJJMC VARCHAR2) IS
SELECT JCDM, JCMC, CLDM
FROM DBZ0010
WHERE SJJMC = V_SJJMC
and rownum < 50;
begin
delete from SYS_SQL;
OPEN CUR_SJJMC;
FETCH CUR_SJJMC INTO V_SJJMC;
WHILE CUR_SJJMC%FOUND LOOP
OPEN CUR_JCDM(V_SJJMC);
SELECT COUNT(*)
INTO V_COUNT
FROM DBZ0010
WHERE XTBH = P_XTBH
and SJJMC = V_SJJMC;
FETCH CUR_JCDM INTO V_JCDM, V_JCMC, V_CLDM;
WHILE CUR_JCDM%FOUND LOOP
v_QXSEL := '';
v_SJSEL := '';
V_QX1 := '';
V_SJ1 := '';
SELECT V_JCDM || ' AS ' ||
decode(V_CLDM,
null,
'"' || V_JCMC || ';C8;P",',
'"' || V_JCMC || '(' || V_CLDM || ');C8;P",')
INTO V_QX1
FROM DUAL;
SELECT V_JCDM || ' AS ' ||
decode(V_CLDM,
null,
'"' || V_JCMC || '",',
'"' || V_JCMC || '(' || V_CLDM || ')",')
INTO V_SJ1
FROM DUAL;
IF V_COUNT = 1 THEN
V_QX1 := RTRIM(V_QX1, ',');
V_SJ1 := RTRIM(V_SJ1, ',');
END IF;
v_QXSEL := v_QXSEL || V_QX1 || CHR(13) || CHR(10);
v_SJSEL := V_SJSEL || V_SJ1 || CHR(13) || CHR(10);
FETCH CUR_JCDM INTO V_JCDM, V_JCMC, V_CLDM;
V_COUNT := V_COUNT - 1;
END LOOP;
CLOSE CUR_JCDM;
END LOOP;
CLOSE CUR_SJJMC;
END;
[/PHP]