sexta-feira, 17 de dezembro de 2010

Execute Immediate para Funções

 

DECLARE

  plsql_block VARCHAR2(2000);

BEGIN

  --montando a string sql

  plsql_block := 'BEGIN atualiza_flag(:Codigo, :snimpressao, :dtimpressao); END;';

  --executando a string que contem plsql_block

  EXECUTE IMMEDIATE plsql_block USING 5, 'S', SYSDATE;

  --agora, mostrando que também é possível executar a rotina sem a necessidade de usar a variavel plsql_block

  EXECUTE IMMEDIATE 'BEGIN atualiza_flag(:Codigo, :snimpressao, :dtimpressao);' USING 112, 'S', SYSDATE;

END;

Criando Tablespace

 

create tablespace spedf_dad

datafile 'E:\Oracle\oradata\synctst\spedf_dad.dbf' size 10M reuse

autoextend on next 10M maxsize 300M

default storage (initial 512K next 256K

minextents 1

maxextents unlimited

pctincrease 0)

online;

Transformando Colunas em Linhas

 

CREATE OR REPLACE FUNCTION col_to_row (p_select  IN VARCHAR2,

                                       p_dlmtr IN VARCHAR2 DEFAULT ',' )

RETURN VARCHAR2

 

/*AUTHID CURRENT_USER --Somente o usuário que criou pode executar*/

AS

TYPE c_refcur IS REF CURSOR;

c_dummy   c_refcur;

 

lc_str    VARCHAR2(4000);

lc_colval VARCHAR2(4000);

 

BEGIN

    OPEN c_dummy FOR p_select;

 

    LOOP

        FETCH c_dummy INTO lc_colval;

        EXIT WHEN c_dummy%NOTFOUND;

        lc_str := lc_str || p_dlmtr || lc_colval;

    END LOOP;

 

    CLOSE c_dummy;

 

    RETURN SUBSTR(lc_str,2);

END;

 

--Executando

SELECT COL_TO_ROW(‘SELECT COL1 FROM TABELA’) FROM DUAL

Related Posts Plugin for WordPress, Blogger...