Anda di halaman 1dari 2

Array para PL/SQL procedure ou function.

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!

You can call it from PLSQL using

declare
v_localvariable OurPack.t_testtype;
begin
v_localvariable(1) := 199;
v_localvariable(2) := 12312;
OurPack.TestProc(v_localvariable);
end;

Pete Pane
pane@synergicsolutions.com

Como exibo informao no SQL PLUS com PL/SQL ?


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

Anda mungkin juga menyukai