Bom pessoal, vou compartilhar uma funcao que retorna valores por parte de um texto especifico que estou utilizando, facilitando a utilizacao de particionamento de texto utilizando um caracter como ponto de particionamento:CREATE OR REPLACE FUNCTION STRIPART(iTEXT VARCHAR2, iCARA CHAR, iINIC INTEGER, iFINA INTEGER, iTUDO INTEGER DEFAULT 1) RETURN VARCHAR2 AS vTEXT VARCHAR2(500) := iTEXT; vINIC INTEGER := 0; vFINA INTEGER := 0; BEGIN IF iINIC = 0 THEN -- SE FOR ZERO E INICIO DE STRING SEMPRE vINIC := 1; ELSE -- PEGA A POSICAO DO CARACTER iCARA vINIC := INSTR(iTEXT, iCARA, 1, iINIC) + 1; END IF; IF INSTR(iTEXT, iCARA, 1, iFINA) = 0 THEN -- SE NAO ENCONTRAR O CARACTER FINAL PEGA TODA A STRING IF iTUDO = 1 THEN vFINA := LENGTH(iTEXT); ELSE vFINA := 0; END IF; ELSE vFINA := INSTR(iTEXT, iCARA, 1, iFINA) - vINIC; END IF; vTEXT := SUBSTR(vTEXT, vINIC, vFINA); RETURN vTEXT; END; Bom pessoal, essa postagem e para auxiliar na utilizacao de expressoes regulares no Oracle, facilitando a codificacao de procedimentos armazenados e funcoes:-- SOMENTE DIGITOSSELECT regexp_replace('Joao 23 Paulo 11 Pinheiro 78','[^\/[:digit:]]') AS NUMEROS FROM DUAL;--ADICIONA ESPACO ONDE FALTAWITH mydata(str) AS( SELECT ' a b c d efg h' FROM DUAL UNION ALL SELECT ' a b c d e f g h ' FROM DUAL UNION ALL SELECT 'a b c d e f g h' FROM DUAL UNION ALL SELECT 'abcdefgh' FROM DUAL)SELECT CASE INSTR(TRIM(str),' ') WHEN 0 THEN str ELSE TRIM(REGEXP_REPLACE(str,'(\S)\s*','\1 ')) END AS str FROM mydata;--REMOVER ESPACOS DUPLOSWITH NOME(STR) AS( SELECT 'ana clara de souza prado' FROM DUAL UNION ALL SELECT 'PEDRO LOPES PINHEIRO' FROM DUAL UNION ALL SELECT 'mARIA DA gloria PINHEIRO' FROM DUAL)SELECT REGEXP_REPLACE(UPPER(TRIM(STR)),'( ){2,}', ' ') AS STRFROM NOME;--ALTERA STRINGSELECT REGEXP_REPLACE('I cannot see you.','\.',' in the dark.') REGEXT_SAMPLEFROM dual;Espero que estes exemplos ajudem. Graca e Paz sejam com todos. Bom pessoal, essa aqui e uma dica rapida para verificar a versao do Oracle Database que esta utilizando e a versao de produtos correlacionados ao mesmo:Queries : select *from v$version;select *from product_component_version;Results : Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit ProductionPL/SQL Release 11.1.0.6.0 - ProductionCORE 11.1.0.6.0 ProductionTNS for Solaris: Version 11.1.0.6.0 - ProductionNLSRTL Version 11.1.0.6.0 - ProductionPRODUCTVERSIONSTATUSNLSRTL11.1.0.6.0ProductionOracle Database 11g Enterprise Edition11.1.0.6.064bit ProductionPL/SQL11.1.0.6.0ProductionTNS for Solaris:11.1.0.6.0ProductionEspero que essa postagem ajude a outros profissionais.Links consultados:https://docs.oracle.com/cd/B28359_01/server.111/b28310/dba004.htmhttp://jasonvogel.blogspot.com.br/2008/08/getting-current-oracle-version-sql.html Bom Pessoal, Vou compartilhar um procedimento para fazer a exclusao de triggers duplicadas que sao utilizadas para entregar id s para cada registro inserido na tabela, segue abaixo:begin ---------------------------------------------------------- -- exclui triggers duplicadas ------- ---------------------------------------------------------- for rc1 in (select tta.* from (select t.TRIGGER_NAME, upper(t.TRIGGER_NAME) as nome_trg_upper, count(1) over(partition by t.TABLE_NAME order by t.TRIGGER_TYPE) as num_trg, row_number() over(partition by t.TABLE_NAME order by t.TRIGGER_TYPE) as reg_trg, t.TRIGGER_TYPE, t.TRIGGERING_EVENT, t.TABLE_OWNER, t.base_object_type, t.TABLE_NAME, t.STATUS from user_triggers t where t.TRIGGER_TYPE = 'BEFORE EACH ROW' and t.TRIGGERING_EVENT = 'INSERT' ) tta order by 1 desc) loop if rc1.num_trg > 1 and rc1.reg_trg > 1 then execute immediate 'DROP TRIGGER ' || '"' || rc1.table_owner || '"."' || rc1.trigger_name || '"'; end if; end loop; ---------------------------------------------------------- -- recompila triggers ------- ---------------------------------------------------------- for rc1 in (select tta.* from (select t.TRIGGER_NAME, upper(t.TRIGGER_NAME) as