Passing an Array to a PL/SQL procedure or fuction:
This is an example of how to pass an array of numbers to a PL/SQL procedure. This is the package definition. I have included the type definition here so it can be used by other PL/SQL programs. package OurPack is TYPE t_testtype IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; procedure TestProc(p_TestArray t_testtype); end; This is the package body. package body OurPack is procedure TestProc(p_TestArray t_testtype) is begin -- Do your processing here accessing the array using p_TestArray(n), where n is the element in the array end; This cannot be called by SQL*Plus!
Descrio: Utilize a package DBMS_OUTPUT para exibir a informao no PLUS, mas preciso estar setado com o comando SET SERVEROUTPUT ON SIZE (1 at 1000000). Exemplo: begin dbms_output.put_line(Testando 1,2,3....); end;
Como gravo e leio arquivos com PL/SQL ?
Descrio: A partir do Oracle 7.3 foi includo uma package chamada UTL_FILE. Exemplo: declare fileHandler UTL_FILE.FILE_TYPE; begin fileHandler := UTL_FILE.FOPEN('','','W'); UTL_FILE.PUTF(fileHandler,'Testando 1,2,3...'); UTL_FILE.FCLOSE(fileHandler); exception when utl_file.invalid_path then raise_application_error(-2000,'Erro path invlido'); end;
Como uso SQL Dinmico com PL/SQL ?
Descrio: A partir do PL/SQL V2.1 utilize a package DBMS_SQL para executar SQLs Dinmicos Exemplo: CREATE OR REPLACE PROCEDURE DYNSQL AS cur integer; rc integer; BEGIN cur := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(cur, 'CREATE TABLE X (Y DATE)', DBMS_SQL.NATIVE); rc := DBMS_SQL.EXECUTE(cur); DBMS_SQL.CLOSE_CURSOR(cur); END; Outro Exemplo: CREATE OR REPLACE PROCEDURE DEPARTMENTS(NO IN DEPT.DEPTNO%TYPE) AS v_cursor integer; v_dname char(20); v_rows integer; BEGIN v_cursor := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(v_cursor, 'select dname from dept where deptno > :x', DBMS_SQL.V7); DBMS_SQL.BIND_VARIABLE(v_cursor, ':x', no); DBMS_SQL.DEFINE_COLUMN_CHAR(v_cursor, 1, v_dname, 20); v_rows := DBMS_SQL.EXECUTE(v_cursor); loop if DBMS_SQL.FETCH_ROWS(v_cursor) = 0 then exit; end if; DBMS_SQL.COLUMN_VALUE_CHAR(v_cursor, 1, v_dname); DBMS_OUTPUT.PUT_LINE('Deptartment name: '||v_dname); end loop; DBMS_SQL.CLOSE_CURSOR(v_cursor); EXCEPTION when others then DBMS_SQL.CLOSE_CURSOR(v_cursor); raise_application_error(-20000, 'Unknown Exception Raised: '||sqlcode||' '||sqlerrm); END;
List Item Dinmic
Abaixo um exemplo declare vLista varchar2(255) := 'RATE_COD_TIPO_ENVOL'; -- nome da lista cursor c is select tpen_cod_tipo_envol, tpen_des_tipo_envol from tipo_envolvido order by 2; begin clear_list( vLista ); for c1 in c loop add_list_element(vLista,1,c1.tpen_des_tipo_envol,c1.tpen_cod_tipo_envol); end loop; exception when others then msg_alert('Erro na criao da lista do envolvido - WHEN-NEW-FORM-INSTANCE','W', FALSE ); end; Espero que ajude