рдЕрдХреНрд╕рд░, рд╕рд┐рд╕реНрдЯрдо рдПрдХреАрдХрд░рдг рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдкреНрд░рд╛рд░реВрдк рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдкреЗрд╢ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдХреЛрдИ рднреА рдбреЗрдЯрд╛ рдЙрдкрднреЛрдХреНрддрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрд░реЛрдд рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдПрдХ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛ рдХреЛ рдПрдХреНрд╕рдПрд▓рдПрд╕рдПрдХреНрд╕ рдпрд╛ рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░рд╛рд░реВрдк рдЖрджрд┐ рдореЗрдВ рдЕрдкрдиреЗ рдорд╛рд▓ рдХреА рдЖрд╡рд╛рдЬрд╛рд╣реА рдкрд░ рд╕рдордп-рд╕рдордп рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрдкрдХрд░рдг рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЙрджреНрдпрдо рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдЕрдкрдирд╛рдИ рдЧрдИ рддрдХрдиреАрдХреА рд╕реНрдЯреИрдХ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЖрдк рд╣рдореЗрд╢рд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреЛ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рднрд┐рдиреНрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдлреНрд░реЗрдорд╡рд░реНрдХ, рд╕рд┐рд╕реНрдЯрдо рд▓реЗрдпрд░ рд╕реЗ рдпреБрдХреНрдд рдЪреЗрди рдпрдерд╛рд╕рдВрднрд╡ рдХрдо рд╣реЛред рдЗрд╕рд╕реЗ рд╕рдорд╛рдзрд╛рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓рд╛ рд╕рдордп рдХрдо рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХреА рдЙрддреНрдкрд╛рджрдХ рдХреНрд╖рдорддрд╛ рдмрдврд╝реЗрдЧреАред
рдпрджрд┐ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, SQL рдХреНрд╡реЗрд░реА рдбреЗрдЯрд╛ рдЪрдпрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдореВрд▓ рдореЗрдВ рд╣реИ, рддреЛ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрдиреАрдп рд╣реЛрдЧреА:
dтА▓=f(SQL(d))
рдЬрд╣рд╛рдБ
рдб - рд╕реНрд░реЛрдд рдбреЗрдЯрд╛,
SQL(d) - рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SQL рдХреНрд╡реЗрд░реА,
рдЪ - рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдЪрдпрди рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ,
dтА▓ - рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ред
Oracle PL / SQL рдХреЗ рд▓рд┐рдП, рдХрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдФрд░ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреИрдХреЗрдЬ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдпреЗ рд╣реИрдВ DBMS_XMLGEN, DBMS_XMLQUERY, AS_XLSX, PL / JSON рдФрд░ рдЕрдиреНрдпред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рд╕рд╡рд╛рд▓ рд╕реАрдПрд╕рд╡реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдарддрд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдХреЛрдИ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдереЗред рдореБрдЭреЗ рдЗрд╕реЗ рдЦреБрдж рдХрд░рдирд╛ рдерд╛, рдлрд┐рд░ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреИрд╕реЗред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди
рдПрдХ рдЙрдкрдХрд░рдг (рдкреАрдПрд▓ / рдПрд╕рдХреНрдпреВрдПрд▓ рдкреИрдХреЗрдЬ) рдмрдирд╛рдПрдБ рдЬреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рдХрд░реНрд╕рд░ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдордирдорд╛рдирд╛ рдЪрдпрди рдХреНрд╡реЗрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╕реАрдПрд╕рд╡реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╡рд╛рд▓реА CLOB рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рджреЗрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, NULL рдХреЛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред CSV рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдпреЗ рдРрд╕реЗ рддрд╛рд░ рд╣реИрдВ рдЬрд┐рдирдХреЗ рддрддреНрд╡ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рдЪрд░рд┐рддреНрд░ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ ";", рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХ рдордирдорд╛рдирд╛ рдЪрд░рд┐рддреНрд░ рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╡рд░реНрдг 0x0D + 0x0A рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред CSV рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдЖрдорддреМрд░ рдкрд░ рд╣реЗрдбрд░ рд╣реЛрддреА рд╣реИ рдФрд░ рдХреЙрд▓рдо рдирд╛рдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред
рдкреИрдХреЗрдЬ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
CREATE OR REPLACE PACKAGE pp_csv AS PROCEDURE query2sheet( stmt IN VARCHAR2, sheet IN OUT CLOB, delimeter IN VARCHAR2 DEFAULT ';' ); PROCEDURE query2sheet( ref_cursor IN OUT SYS_REFCURSOR, sheet IN OUT CLOB, delimeter IN VARCHAR2 DEFAULT ';' ); END;
рджреЛ рдЕрддрд┐рднрд╛рд░рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ, рдЙрдирдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдХрд░реНрд╕рд░ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВред рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ; рдпрд╣ CLOB рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реИред рдЕрдВрдд рдореЗрдВ, рддреАрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ CSV рд╕реЗрдкрд░реЗрдЯрд░ рд╣реИред
рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд DBMS_SQL рдкреИрдХреЗрдЬ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧрд╛, рдЬреЛ рд╣рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдХрд░реНрд╕рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ (рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ) рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЪрдпрди рдореЗрдВ рдХрд┐рддрдиреЗ рдХреЙрд▓рдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
DBMS_SQL рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЖрдкрдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рдордирдорд╛рдиреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╣реЛрддрд╛ рд╣реИ:
AS cur PLS_INTEGER := DBMS_SQL.OPEN_CURSOR;
рдПрдХ рдХрд░реНрд╕рд░ рдЪрд░ рд▓реЗрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ - Oracle рдХреЗ 11 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рд░реВрдкрд╛рдВрддрд░рдг "рдХрд░реНрд╕рд░ рдЪрд░ тЖТ тАЛтАЛSQL рдХрд░реНрд╕рд░ рдирдВрдмрд░" рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЧрдпрд╛ рд╣реИред
DBMS_SQL.TO_CURSOR_NUMBER рдлрд╝рдВрдХреНрд╢рди REFCURSOR рдЪрд░ (рджреГрдврд╝рддрд╛ рд╕реЗ рдпрд╛ рдХрдордЬреЛрд░ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛) рдХреЛ SQL рдХрд░реНрд╕рд░ рдирдВрдмрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ DBMS_SQL рджрд┐рдирдЪрд░реНрдпрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХрд░реНрд╕рд░ рдЪрд░ рдХреЛ DBMS_SQL.TO_CURSOR_NUMBER рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЦреБрд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
cur PLS_INTEGER := DBMS_SQL.TO_CURSOR_NUMBER(ref_cursor);
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбрд╛рдпрдиреЗрдорд┐рдХ рдХрд░реНрд╕рд░ рдХреА
рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдг рдиреАрдЪреЗ рдЖрдПред рдЕрдЧрд▓рд╛ рдХрджрдо рдЗрд╕ рд╕реЗрдЯ рдХреЗ рдХреЙрд▓рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реИред
DMBS_SQL рдкреИрдХреЗрдЬ рдЖрдкрдХреЛ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдХрд░реНрд╕рд░ рдХреЗ рдХреЙрд▓рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрдВрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЕрднрд┐рд▓реЗрдЦреАрдп рд╕рд╛рд░рдгреА рдореЗрдВ рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рдХрд╛рд░ DBMS_SQL.DESC_TAB (рдпрд╛ DESC_TAB2 рдкрд░ рдпрджрд┐ рдХреНрд╡реЗрд░реА 30 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрдг рд╕реНрддрдВрдн рдирд╛рдо рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ PL / SQL рд╕рдВрдЧреНрд░рд╣ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдФрд░ рдХрд░реНрд╕рд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
AS cols DBMS_SQL.DESC_TAB2; ncols NUMBER;
рдЗрд╕рдХреЗ рдмрд╛рдж, DBMS_SQL рдкреИрдХреЗрдЬ рдХреЛ рдбрд╛рдпрдирд╛рдорд┐рдХ рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрдпрдирд┐рдд рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ DEFINE_COLUMN рдХрд╣рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
FOR i IN 1 .. ncols LOOP DBMS_SQL.DEFINE_COLUMN(cur, i, col_val_chr, 32767); END LOOP;
рджреВрд╕рд░реЗ рддрд░реНрдХ DEFINE_COLUMN рдореЗрдВ, рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдкрд╛рд░рд┐рдд рдХреА рдЧрдИ рд╣реИ - рд╕реВрдЪреА рдореЗрдВ рдХреЙрд▓рдо рдХреА рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╕реНрдерд┐рддрд┐ред рддреАрд╕рд░рд╛ рддрд░реНрдХ рдХрд░реНрд╕рд░ рдХреЙрд▓рдо рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рдХрд╛рд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, DBMS_SQL.DEFINE_COLUMN рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕реЗ, "VARCHAR2"), рд▓реЗрдХрд┐рди рдПрдХ рдкреНрд░рдХрд╛рд░ VARCHAR2 рдХреЗ рд╕рд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░ред
рдЪреМрдереЗ рддрд░реНрдХ рдореЗрдВ рдПрдХ рд╡рд░реНрдг рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЙрд▓рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЙрди рдорд╛рдиреЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреА рд╣реЛрдЧреА рдЬрд┐рдиреНрд╣реЗрдВ рдХрд░реНрд╕рд░ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЕрдм рдЖрдк рдПрдХ рд╣реЗрдбрд░ рд▓рд╛рдЗрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
AS cap CLOB;
рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓рдо рдХреЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП DBMS_SQL.FETCH_ROWS рдФрд░ рдмрд╛рдж рдХреЗ рдХреЙрд▓ DBMS_SQL.COLUMN_VALUE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдкрдВрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
AS bod CLOB;
рддрдм рдпрд╣ рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдореА CSV рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реА рд░рд╣рддрд╛ рд╣реИ
DBMS_LOB.APPEND(sheet, cap); DBMS_LOB.APPEND(sheet, c_line_break); DBMS_LOB.APPEND(sheet, bod);
рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВ
EXCEPTION WHEN OTHERS THEN sheet := NULL;
рдФрд░ рдХрд░реНрд╕рд░ рдмрдВрдж рдХрд░реЗрдВ
DBMS_SQL.CLOSE_CURSOR(cur);
рдкреИрдХреЗрдЬ рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк
DECLARE csv CLOB; BEGIN DBMS_LOB.CREATETEMPORARY(csv, TRUE, DBMS_LOB.SESSION); pp_csv.query2sheet('SELECT empcode, fio FROM employee WHERE ROWNUM < 10', csv); DBMS_OUTPUT.PUT_LINE(csv); DBMS_LOB.FREETEMPORARY(csv); END;
DECLARE csv CLOB; cur SYS_REFCURSOR; BEGIN OPEN cur FOR SELECT empcode, fio FROM employee WHERE ROWNUM < 10; DBMS_LOB.CREATETEMPORARY(csv, TRUE, DBMS_LOB.SESSION); pp_csv.query2sheet(cur, csv); DBMS_OUTPUT.PUT_LINE(csv); DBMS_LOB.FREETEMPORARY(csv); END;
рдпрд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рднреА рд╣реИ,
рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдВрд▓рдЧреНрди рд╣реИ ред
рдХрд┐рддрд╛рдм рдиреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдорджрдж рдХреА
рдлреБрдПрд░рд╕реНрдЯреАрди рдПрд╕ред, рдЕрд░рд╛рдЗрд╡реНрдб рдмреА - рдУрд░реЗрдХрд▓ рдкреАрдПрд▓ / рдПрд╕рдХреНрдпреВрдПрд▓ред рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдПред