segunda-feira, 17 de abril de 2017


Oracle - SQL Developer - Números das Linhas

Oracle - Decimal\Horas


DECIMAL/HORAS
select  690/60,
        trunc((690/60),0),
        ((690/60)-(trunc((690/60),0)))*60
from dual


SELECT  HORA,
        TO_NUMBER(SUBSTR(HORA,1,INSTR(HORA,':')-1)) HORA,
        TO_NUMBER(SUBSTR(HORA,(INSTR(HORA,':')+1),2)) MINUTO,
        (TO_NUMBER(SUBSTR(HORA,1,INSTR(HORA,':')-1)) +
         TO_NUMBER(SUBSTR(HORA,(INSTR(HORA,':')+1),2))) AS VLRDECIMAL
FROM ZPFFINANC_IMP

Oracle - INSTR (PATINDEX - SQL Server)


PATINDEX - INSTR
quarta-feira, 4 de janeiro de 2017
13:41
SELECT  HORA,
        TO_NUMBER(SUBSTR(HORA,1,INSTR(HORA,':')-1)) HORA,
        TO_NUMBER(SUBSTR(HORA,(INSTR(HORA,':')+1),2)) MINUTO,
        (TO_NUMBER(SUBSTR(HORA,1,INSTR(HORA,':')-1)) +
         TO_NUMBER(SUBSTR(HORA,(INSTR(HORA,':')+1),2))) AS VLRDECIMAL
FROM ZPFFINANC_IMP

Oracle - UPDATE com FROM


Exemplo:

-- ATUALIZA CAMPO DE HORARIO (LEGADO)
 UPDATE ZIMPFUNC_DEPARA_MATER A SET A.CODHORARIOLEG = ( SELECT  COD_HORARIO_061
                                                        FROM ZIMPFUNCIONARIOS_MATER B
                                                        WHERE B.CHAPA_001 = A.CODFUNC);
                                                                                                              
-- ATUALIZA CAMPO DE HORARIO (RM)
 UPDATE ZIMPFUNC_DEPARA_MATER A SET CODHORARIORM = ( SELECT  CODLABORE
                                                     FROM ZIMPFUNC_HORARIOS B
                                                     WHERE upper(substr(descr_dominio,2,length(descr_dominio))) = upper(a.codhorarioleg));  

Oracle - SELECT * + campos


SELECT  X.*,
               5 AS CODCOLIGADA
FROM ZIMPFUNCIONARIOS_MATER X

SELECT  5 AS CODCOLIGADA,
              X.*
FROM ZIMPFUNCIONARIOS_MATER X


Sempre apelidar a tabela, para que esta forma de SELECT + campos adicionais funcione

Oracle - Upper, Lower, Initcap, Replace, CHR e ASCII


Upper, Lower, Initcap, Replace, CHR e ASCII 

SELECT  UPPER('teste') AS MAIUSCULO,
        LOWER(UPPER('teste')) MINUSCULO,
        INITCAP('teste') PRIMEIRA_MAISUCULA,
        REPLACE(('TESTE  TAB  TAB'),CHR(32),' ') AS RETIRA_TAB,
       'FUMIO'||CHR(32)||'TESTE' AS ADICIONA_TAB_TEXTO,
        ASCII(' ') VERIFICA_CODIGO_ASC_TAB
from dual

Oracle - Translate\Acentuação


SELECT NOME
FROM PPESSOA
WHERE upper
    (translate(nome,
    'ÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜáçéíóúàèìòùâêîôûãõëü',
    'ACEIOUAEIOUAEIOUAOEUaceiouaeiouaeiouaoeu')) =  'FÁBIO FÜMIO'

Oracle|MSSQL - ROWNUM\TOP



Prezados,

No banco dados SQL Server (MSSQL), é comum criarmos sentenças com o comando TOP, para facilitar as nossas pesquisas e análises.

Ex:          SELECT TOP 5 *
                FROM GCOLIGADA

Neste comando, ele listará os 5 primeiros registros da tabela GCOLIGADA.

No Oracle, não temos o comando TOP, com o mesmo resultado/funcionalidade, então podemos usar o comando ROWNUM, que funcionará da mesma forma que o comando TOP (MSSQL):

Ex:          SELECT *
                FROM GCOLIGADA
                WHERE ROWNUM <= 5

Oracle - Procedures Válidas?


SELECT OBJECT_NAME, STATUS
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = ’PROCEDURE’
AND STATUS = ‘INVALID’

Oracle - Function (Retira Acentuação)


Criei uma função para alterar os caracteres acentuados de um texto/string, facilitando assim algumas consultas/pesquisas que temos de realizar, uma vez que o Oracle diferencia caracteres acentuados dos não acentuados.
O nome da função é: FNC_RETIRA_ACENTUACAO, e a sua utilização é feita da seguinte forma:

FNC_RETIRA_ACENTUACAO( “Texto a ser alterado”)

Ex:          SELECT FNC_RETIRA_ACENTUACAO('ÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜáçéíóúàèìòùâêîôûãõëü')
FROM DUAL;

Resultado:  ACEIOUAEIOUAEIOUAOEUaceiouaeiouaeiouaoeu



CREATE OR REPLACE FUNCTION FNC_RETIRA_ACENTUACAO(V_TEXTO_I IN VARCHAR2)
RETURN VARCHAR2
IS V_TEXTO_O VARCHAR2(100);
BEGIN
  V_TEXTO_O := translate(V_TEXTO_I,'ÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜáçéíóúàèìòùâêîôûãõëü',
                                   'ACEIOUAEIOUAEIOUAOEUaceiouaeiouaeiouaoeu'); 
  RETURN (V_TEXTO_O);
END;



SELECT FNC_RETIRA_ACENTUACAO('ÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜáçéíóúàèìòùâêîôûãõëü')
FROM DUAL