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; |
sexta-feira, 17 de dezembro de 2010
Execute Immediate para Funções
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 |
Assinar:
Postagens
(
Atom
)