Jump to content

Search the Community

Showing results for tags 'oracle'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Web Development
    • HTML e CSS
    • Javascript
    • PHP
    • Ruby
    • Python
    • Java
    • .NET
    • Docker, Kubernets and other environments
    • WordPress
    • Mobile
    • Agile
    • Desenvolvimento de Games
    • Banco de Dados
    • Design and UX
    • Algoritmos & Outras Tecnologias
  • Entretenimento e uso pessoal
    • Segurança & Malwares
    • Geral
    • iMasters's pub

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Found 196 results

  1. Bom dia, estou iniciando com bando de dados oracle e plsql e estou precisando de uma ajuda para criar um arquivo .bat para nossa empresa em que o usuário consiga apagar os horários do nosso banco de dados, mas não sei como fazer a procedure identificar o dado digitado na variável do .bat script do .bat @echo Off title limpeza de horarios. : inicio cls echo -------------------Informe uma data valida, apenas numeros------------------- echo . echo ------------------------------informe a data--------------------------------- set /p data = echo . echo . sqlplus usuario/senha@intancia @script.sql cls echo . : Fim echo . echo -----------------Horario apagado----------------- echo . pause O script em questão é esse, ele executa uma procedure, ela apaga os horários, o parâmetro da mesma é uma data ex: abaixo. set serveroutput on begin sp_apaga_horario('31072019'); end; / exit como eu faço para o dado salvo na variável data seja executado no parâmetro da procedure? não estou conseguindo fazer isso, estou tendo que alterar o script para data que o usuário quer apagar e somente executando o .bat digitando números aleatórios para que ele não trave, não sei como fazer para a mesma identificar esse dado estando em um script diferente. Quem souber e puder me ajudar ja agradeço desde já.
  2. asacap1000

    Ultima data independente do id

    Galera não sei o porque mas n select abaixo eu preciso mostrar o ultimo registro de uma das datas que são lançadas. SELECT IO.ID_IN_OUT TICKET, TO_CHAR(IO.TIME_ARRIVAL, 'DD/MM/YYYY HH24:MI') CHEGADA, TO_CHAR(IO.TIME_RELEASE_IN, 'DD/MM/YYYY HH24:MI') LIBERADO, TO_CHAR(IO.TIME_IN, 'DD/MM/YYYY HH24:MI') ENTRADA, SUBSTR(SP.NAME, 0, 18) TRANSPORTADORA, SUBSTR(DR.NAME, 0, 18) MOTORISTA, VE.PLATE PLACA, (SELECT DISTINCT MAX(TOS.PLATZ) DOCA FROM PICKAUF PI, AUFTRAEGE TOS, (SELECT IO.ID_IN_OUT, MAX(IO.TIME_RELEASE_PP) TIME_RELEASE_PP, IOP.DOCUMENT, MAX(IO.TIME_OUT) TIME_OUT FROM IN_OUT IO, IN_OUT_POS IOP WHERE IO.ID_IN_OUT = IOP.ID_IN_OUT --AND IO.ART_IN_OUT IN ('CA', 'CCE', 'CC') AND IO.STAT <> '80' GROUP BY IOP.DOCUMENT, IO.ID_IN_OUT) SAD WHERE PI.CHARGE = TOS.NR_AUF AND SAD.ID_IN_OUT = IO.ID_IN_OUT AND SAD.DOCUMENT(+) = REPLACE(TRANSLATE(TOS.HINW_ZUST, '/-', ' '), ' ') GROUP BY SAD.ID_IN_OUT) DOCA FROM IN_OUT IO, SPEDITEURE SP, VEHICLE VE, TRACTOR TR, DRIVER DR WHERE IO.STAT <> '80' AND IO.TIME_ARRIVAL IS NOT NULL AND TR.ID_TRACTOR = IO.ID_TRACTOR AND DR.ID_DRIVER = IO.ID_DRIVER AND VE.ID_VEHICLE = IO.ID_VEHICLE AND IO.TIME_RELEASE_PP IS NULL AND SP.ID_SPEDITEUR = IO.ID_SPEDITEUR AND IO.ART_IN_OUT IN ('CA', 'CC', 'CCE', 'CV') and rownum = '1' ORDER BY TO_CHAR(IO.TIME_RELEASE_IN, 'DD/MM/YYYY HH24:MI') Neste Select temos as datas de CHEGADA, LIBERADO, ENTRADA. eu preciso mostrar o ultimo registro do LIBERADO. Eu já fiz um max porém não retornou.Ela será utilizada em um telão no pátio de uma empresa. O telão será desta forma
  3. Galera preciso de ajuda, Meu campo no banco de data é data/hora, e preciso ver a hora. Quando eu faço o select me retorna apenas a data. Realizei o debug e vi que esta retornando apenas a data como varchar. Conseguem me ajudar ? Ja tentei diversas conversões de data. To char, To date , Date , Strtotime ... Nada funcionou. Uso PHP 5.6.40 e banco de dados Oracle. Minha necessidade é mostrar a data e hora do evento. Alguem conhece uma solução ? Formato no meu banco : 25.07.2019 05:33:00 Meu codigo: SELECT : $sql='SELECT tr.tm_prf_act as prf, tr.tm_cod_of, ev.ev_nom_mac , un.dt_ini_parada, un.dt_fim_parada, un.cod_motivo, un.cod_mot_despachador FROM unl_trens_parados un,trens tr, elem_via ev WHERE un.id_trem_act = tr.tm_id_trm AND un.id_sb = ev.ev_id_elm AND un.dt_ini_parada > SYSDATE -1 AND un.id_posto = 2 AND un.cod_motivo IN (20,28,26,50,15,30) AND un.dt_fim_parada IS NOT NULL ORDER BY un.dt_ini_parada desc '; Conexão : $stid=oci_parse($ora_conexao,$sql); oci_execute($stid); Chamando a data somente para testar : $teste = oci_result($stid,'DT_INI_PARADA'); --> Estou testando o campo de data echo date('d/m/Y H:m:s', strtotime($teste)); -> Chamando a data Debug ( Me retorna apenas data "25/07/2019") $var = $teste; -> Debugando var_dump($var); > Debugando die(); > Debugando
  4. Pessoal, bom dia.Preciso calcular em horas e minutos a diferença entre datas com horas e minutos.Exemplo 1:Data Inicial: 01/06/2006 10:30Data Final: 02/06/2006 11:00Preciso que o retorno seja: 23:30Exemplo 2:Data Inicial: 01/06/2006 10:30Data Final: 02/06/2006 14:00Preciso que o retorno seja: 27:30Tentei o seguinte código abaixo, porém ele dá uma diferença de 1 hora a mais. Alguém pode me ajudar? Ou me passar outra forma de fazer? Obrigada! 1 2 3 4 5 select round(((to_number(to_date('02/06/2006 11:00','DD/MM/RRRR HH24:MI') - to_date('01/06/2006 10:30','DD/MM/RRRR HH24:MI')) * 1440))/60)||':'|| round((to_number(to_date('02/06/2006 11:00','DD/MM/RRRR HH24:MI') - to_date('01/06/2006 10:30','DD/MM/RRRR HH24:MI')) * 1440) -1440) from dual
  5. Olá, preciso transformar a seguinte subquery para utilizar como uma table no join NVL((SELECT X.MPE_META FROM (SELECT MPE_IDC_ID, MPE_META FROM META_PERSONALIZADA_SLA M ORDER BY M.MPE_META DESC) X WHERE ROWNUM = 1 AND X.MPE_IDC_ID = IDC_ID AND X.MPE_META <= APR_NEGOCIACAO_SLA), IDC_META) eu utilizo esse trecho em vários lugares dentro da minha procedure, então queria utilizar como "LEFT JOIN", assim o custo seria menor da procedure caso seja possivel e alguem puder ajuda
  6. emerod

    Erro ORA-31641(EXPDP)

    Boa tarde! Estou montando uma rotina de backup para um banco de dados oracle, com o seguinte comando: expdp compiere/compiere@COMPIERE directory=compierebkp schemas=compiere dumpfile=ExpDat.dmp NOLOGFILE=Y Porém está retornando estes erros: Conectado a: Oracle Database 11g Release 11.2.0.4.0 - 64bit Production ORA-39001: valor de argumento invßlido ORA-39000: especificaþÒo de arquivo de dump incorreto ORA-31641: nÒo Ú possÝvel criar o arquivo de dump "c:\compiere2\data/ExpDat.dmp" ORA-27040: erro ao criar arquivo, nÒo foi possÝvel criar o arquivo Linux-x86_64 Error: 2: No such file or directory Additional information: 1 O banco está instalado em uma maquina linux e eu estou montando o backup em uma maquina linux. Segue a tela com o detalhamento do erro: Alguém pode me ajudar? Obrigado Emerson Ricardo Rodrigues
  7. Ola Pessoal! Aqui na minha empresa não existe um usuário por pessoa e sim um usuário único para todos utilizarem (regras da empresa isso). A forma que eles dizem que controla quem esta acessado o banco é pelo IP da maquina. Como eu faço para saber qual USUÁRIO, IP E NOME DA MAQUINA que está fazendo SELECT, UPDATE, INSERT, DELETE em uma determinada tabela(s)? Detalhe, não dou o administrador do banco, somente desenvolvedor. Estou perguntando isso, porque tem outras diretorias que acessão algumas tabelas que são de minha responsabilidade e não tenho noção se está sendo feito alguma modificação nelas. Abraços,
  8. samuelpanamericana

    Erro de permissão Oracle

    Olá Pessoal, estou com um problema com relação ao Oracle em nossas máquinas aqui! Quando tentamos acessar o SGT (sistema de gerenciamento textil) através de um usuário de rede comum sem privilégios administrativos na máquina ele apresenta o seguinte erro ERRO: "Oracle não instalado ou seu caminho é inválido. Consulte o seu superior [\Bin\ORA803.dll]" Código de erro 803 O usuário não tem acesso ao Oracle Path por ser um usuário comum sem privilégios administrativos, devido a problemas de segurança não queremos deixar os usuários com privilégios administrativos evitando assim problemas com a alteração e instalação de programas, abrimos esse tópico para resolver este problema da necessidade de ser um administrador da máquina para executar o SGT, precisamos que usuários sejam comuns para acessá-lo! Confirmei que o usuário está tendo privilégios apropriados no caminho binário Oracle. Os usuários têm acesso completo ao caminho "C: \ Oracle", eu já configurei dessa maneira: Cliquei com o botão direito do mouse na pasta oracle/segurança/usuários do domínio/controle total A única maneira que nosso programa(SGT) pode encontrar a pasta oracle é definir os usuários do domínio para o grupo de administradores Porém tivemos alguns problemas ao fazer isso como por exemplo usuarios instalando programas de terceiro e efetuando alterações nas máquinas. Se alguém já passou pela mesma situação ou situação parecida eu ficaria grato se pudessem ajudar!! Atenciosamente Samuel
  9. felipeaggs

    Totalização de valores por itens

    Boa-tarde, pessoal! Estou com um problema e não consigo resolvê-lo de forma alguma. Vou exemplificar aqui o que acontece. Tenho duas tabelas, uma tabela é relativa a registro de nota fiscal, estruturada da seguinte forma (edição simplificada). TGFCAB ID | DTNEG | NUMNOTA | CODTIPOPER | CODEMP | 1 | 01/01/2019 | 1000 | 50 | 7 | 2 | 02/01/2019 | 1001 | 50 | 7 | 3 | 02/01/2019 | 1002 | 50 | 7 | 4 | 03/01/2019 | 1003 | 50 | 7 | TGFITE ID | NUMNOTA | QTDNEG| VLRUNIT | VLRTOT | CODVOL | PRODUTONFE 1 |1001 | 5 | 10 | 50 | UN | 10 2 |1001 | 10 | 700 | 7000 | TN | 11 3 |1002 | 3 | 20 |60 | UN | 12 4 |1003 | 20 | 7 | 140 | UN | 10 5 |1003 | 100 | 7 | 700 | UN | 10 Eu preciso realizar um select de forma que traga as Informação abaixo. PRODUTO| QTDNEGMES | VALORTOTAL 10 | 125 | 890 11 | 10 | 7000 12 | 3 | 60 Já tentei de todas as formas possíveis, porém eu não consigo de forma alguma. Por favor, alguém poderia me ajudar?
  10. Abran

    PL SQL (Select dentro do LOOP)

    Gostaria de poder fazer um SELECT dentro do LOOP igual ao exemplo abaixo. Esse exemplo não deu certo, se tirar esse SELECT que está dentro do LOOP, tudo funciona. O problema está no Select dentro do LOOP que nao aceita. ORA-01403: dados não encontrados A ideia é, Z45 grava cliente, e Z46 grava títulos em aberto. Toda vez que rodar, deverá checar se existe novos títulos que ainda não foram gravados, e só gravar os que ainda não foram. Alguem sabe alguma maneira de fazer o que preciso ? DECLARE v_CODCLI VARCHAR2 (6); vPREFIXO VARCHAR2 (3); vNUM VARCHAR2 (9); vPARCELA VARCHAR2 (3); BEGIN v_CODCLI := '0'; FOR V_FUNC IN ( SELECT E1_FILIAL, A1_COD, A1_LOJA, A1_PESSOA, E1_PREFIXO, E1_NUM, E1_PARCELA, E1_TIPO, E1_NATUREZ, E1_EMISSAO, E1_VENCREA, E1_VALOR, CASE WHEN TO_DATE('20190627', 'yyyymmdd') - TO_DATE(E1_VENCTO, 'yyyymmdd') < 0 THEN 0 ELSE TO_DATE('20190627', 'yyyymmdd') - TO_DATE(E1_VENCTO, 'yyyymmdd') END ATRASO FROM SE1010 SE1 INNER JOIN SA1010 A1 ON A1.A1_COD = E1_CLIENTE AND A1_LOJA = E1_LOJA AND A1.D_E_L_E_T_ = SE1.D_E_L_E_T_ WHERE SE1.D_E_L_E_T_ = ' ' ORDER BY A1_LOJA, A1_COD ) LOOP SELECT Z46_PREFIX, Z46_NUM, Z46_PARCEL, Z46_TIPO, Z46_NATURE INTO vPREFIXO, vNUM, vPARCELA, vTIPO, vNATUREZ FROM Z46010 Z46 WHERE Z46_PREFIX = V_FUNC.E1_PREFIXO AND Z46_NUM = V_FUNC.E1_NUM AND Z46_PARCEL = V_FUNC.E1_PARCELA AND D_E_L_E_T_ = ' ' ; IF vPREFIXO || vNUM || vPARCELA != V_FUNC.E1_PREFIXO || V_FUNC.E1_NUM || V_FUNC.E1_PARCELA THEN IF V_FUNC.A1_COD <> v_CODCLI THEN v_CODCLI := V_FUNC.A1_COD; INSERT INTO DADOSADV.Z45010 ( Z45_RECNO, Z45_FILIAL, Z45_CODCLI, Z45_LOJA, Z45_PESSOA, Z45_DTCAD ) VALUES ( (SELECT CASE WHEN MAX(Z45_RECNO) IS NULL THEN 1 ELSE MAX(Z45_RECNO) + 1 END Z45_RECNO FROM Z45010) , V_FUNC.E1_FILIAL, V_FUNC.A1_COD, V_FUNC.A1_LOJA, V_FUNC.A1_PESSOA, TO_CHAR(SYSDATE, 'YYYYMMDD') ); COMMIT; END IF; INSERT INTO DADOSADV.Z46010 ( Z46_RECNO, Z46_RECZ45, Z46_STATIT, Z46_PREFIX, Z46_NUM, Z46_PARCEL, Z46_TIPO, Z46_NATURE, Z46_VALOR, Z46_ATRASO, Z46_DTCAD ) VALUES ( (SELECT CASE WHEN MAX(Z46_RECNO) IS NULL THEN 1 ELSE MAX(Z46_RECNO) + 1 END Z46_RECNO FROM Z46010) , (SELECT CASE WHEN MAX(Z45_RECNO) IS NULL THEN 1 ELSE MAX(Z45_RECNO) END Z45_RECNO FROM Z45010), 0, V_FUNC.E1_PREFIXO, V_FUNC.E1_NUM, V_FUNC.E1_PARCELA, V_FUNC.E1_TIPO, V_FUNC.E1_NATUREZ, 20, V_FUNC.ATRASO, TO_CHAR(SYSDATE, 'YYYYMMDD') ); COMMIT; END IF; END LOOP; END;
  11. asacap1000

    Ultima nota fiscal não retorna.

    Galera estou com uma consulta que travei em uma situação. Eu preciso buscar as ultimas informações de uma Nota fiscal. NUMERO DA NF | DATA FATURAMENTO | COBERTURA neste select ele utiliza como parâmetro o lote cadastrado no sistema de estoque, e ao pesquisar ele volta a Data do faturamento e cobertura corretos porém o numero da NF é outro bem antiga. O que posso estar fazendo errado nesta consulta?? segue a query SELECT TO_CHAR(MAX(OS.NR_NF)) NOTA, TO_CHAR(MAX(TO_DATE(REPLACE(OS.DATE_BILL, '/.', ''), 'dd/mm/yy')), 'dd/mm/yyyy') DATA_FAT, TO_CHAR(MAX(TO_DATE(REPLACE(IT.DIV_6, '/.', ''), 'dd/mm/yy')), 'dd/mm/yyyy') COBERTURA FROM BILL_OS_ITEM IT, BILL_OS OS, BILL_ITEM B WHERE OS.LAGER = IT.LAGER AND OS.ID_KLIENT = IT.ID_KLIENT AND OS.ID_OS = IT.ID_OS AND IT.LAGER = OS.LAGER AND IT.ID_OS = OS.ID_OS AND IT.BILLITE = B.BILLITE AND OS.STATUS <> '80' --AND OS.NR_NF = '119247' AND IT.DIV_1 = 'EX16208816' A nota fiscal que deveria retornar ´seria a 119247, porém vem 99336.
  12. Bom dia amigos, me deparei com um problema estou criando uma procedure que precisa criar uma PK em uma tabela ja existente e apos isso realizar um insert porem quando existe um dado duplicado por algum motive a exception DUP_VAL_ON_INDEX NAO FUNCIONA o insert funcionou mas quando testo uma situacao de duplicacao eu recebo um erro oracle 02260 e diz que a tabela somente pode ter uma PK porem a exception deveria tartar o erro , eu vou deixar o codigo a baixo par se alguem puder me ajudar isso desde ja agradeco a todos, CREATE OR REPLACE PROCEDURE MANUAL_CLIENT_INSERT_FIP AS Y_CONT NUMBER := 0; W_CONT NUMBER; BEGIN EXECUTE IMMEDIATE 'ALTER TABLE TEMP_FIP_CLIENT_HISTORIC ADD PRIMARY KEY (CLIENTKEY)'; FOR REG IN (SELECT LOADDATE, CLIENTKEY, CLIENTSEGMENT, CLIENTNAME, 'UK' AS COUNTRY, 'FIP' AS PROGRAM, 'TPL' AS COVERAGE FROM TEMP_FIP_CLIENT_HISTORIC ) LOOP BEGIN W_CONT := NVL(W_CONT, 0)+ 1; DBMS_OUTPUT.PUT_LINE('RECORDS' ||'-'|| W_CONT ||' '||REG.LOADDATE||' '||REG.CLIENTKEY||' '||REG.CLIENTSEGMENT||' '|| REG.CLIENTNAME||' '||'UK'||' '||'FIP'||' '||'TPL'); INSERT INTO GV_MANUAL_CLIENT(LOADDATE, CLIENTKEY, CLIENTSEGMENT, CLIENTNAME, COUNTRY, PROGRAM, COVERAGE ) VALUES (SYSDATE, REG.CLIENTKEY, REG.CLIENTSEGMENT, REG.CLIENTNAME, REG.COUNTRY, REG.PROGRAM, REG.COVERAGE); EXCEPTION WHEN DUP_VAL_ON_INDEX THEN DBMS_OUTPUT.PUT_LINE(W_CONT ||' '||'DUPLICATE KEY'); END; END LOOP; END;
  13. matlaureto

    Oracle outer join depreciado

    Pessoal, boa tarde!!! Gostaria de uma opinião de vocês... sempre trabalhei no Oracle utilizando left join, inner join, e não a marcação de join especifica da oracle (+). Quando estudei para a certificação 1Z0-047, OCE SQL Expert, lá mesmo falava para não utilizar a marcação (+) por se tratar de um código depreciado. Alguem sabe informar se essa marcação realmente é depreciada? Estou trabalhando em uma empresa onde o padrão dos joins é com esta marcação da Oracle, então to buscando informações sobre isso. Alguem sabe me orientar quanto a isso? Muito obrigado a todos!!
  14. Estou tentando mandar uma "Blind Copy" pelo nossa Procedure de envio de email , pela documentação estaria ok , mas não está enviando nem gerando qualquer erro , o código está abaixo , os itens sensíveis foram trocados por "x" O que posso estar fazendo de errado ? SP : create or replace PROCEDURE ENVIA_EMAIL_CLOBHBC (ds_email_origem_w varchar2, ds_email_destino_p varchar2, ds_assunto varchar2, p_attach_clob IN CLOB DEFAULT NULL, p_httm in varchar2 default 'S', p_log out varchar2, p_nome_destino in varchar2 default null) is l_step PLS_INTEGER := 12000; ds_smtp_w varchar2(20) := 'xx.xx.x.xx'; /* Abre conex?o SMTP e HTTP */ CONEXAO UTL_SMTP.CONNECTION; vs_origem varchar2(100) := ds_email_origem_w; -- vs_para varchar2(100); vs_cc varchar2(100); -- PROCEDURE send_header(name IN VARCHAR2, header IN VARCHAR2) AS BEGIN UTL_SMTP.WRITE_DATA(CONEXAO, name || ': ' || header || UTL_TCP.CRLF); END; BEGIN /* Abre conex?o com um Servidor SMTP(Simple Mail Transfer Protocol), porta padr?o SMTP e 25 */ CONEXAO := utl_smtp.open_connection (ds_smtp_w,25); UTL_SMTP.HELO (CONEXAO, ds_smtp_w); /* Endereco do servidor de SMTP */ --utl_smtp.command (CONEXAO, 'AUTH LOGIN'); --utl_smtp.command (CONEXAO, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw((ds_user_id_w))))); --UTL_SMTP.COMMAND (CONEXAO, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW((DS_SENHA_SMTP_W))))); UTL_SMTP.MAIL (CONEXAO, ('<' || vs_origem || '>')); /* E-mail de quem esta mandando */ -- se estiver em lista separado por ";" manda para o 1º como "para" e para o 2º como CC (copia) /* Para quem vou mandar */ IF INSTR(ds_email_destino_p,';') = 0 THEN vs_para := ds_email_destino_p; UTL_SMTP.RCPT (CONEXAO, ('<' || ds_email_destino_p || '>')); /* Para quem vou mandar */ ELSE vs_para := SUBSTR(ds_email_destino_p,1,INSTR(ds_email_destino_p,';')-1); vs_cc := SUBSTR(ds_email_destino_p,INSTR(ds_email_destino_p,';')+1,length(ds_email_destino_p)); UTL_SMTP.RCPT (CONEXAO, ('<' || vs_para || '>')); /* Para quem vou mandar original */ UTL_SMTP.RCPT (CONEXAO, ('<' || vs_cc || '>')); /* Para quem vou mandar copia */ END IF; UTL_SMTP.OPEN_DATA(CONEXAO); If upper(p_httm) <> 'S' Then send_header('Subject','=?iso-8859-1?Q?' ||UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.QUOTED_PRINTABLE_ENCODE(UTL_RAW.CAST_TO_RAW(ds_assunto)))); Else --send_header('Subject','=?iso-8859-1?Q?' ||UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.QUOTED_PRINTABLE_ENCODE(UTL_RAW.CAST_TO_RAW(ds_assunto)))|| '?='); send_header('Subject',UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.QUOTED_PRINTABLE_ENCODE(UTL_RAW.CAST_TO_RAW(ds_assunto)))); end if; If upper(p_httm) <> 'S' Then UTL_SMTP.write_data(CONEXAO, 'Content-Type: text/html; charset="UTF-8"' || utl_tcp.CRLF); Else UTL_SMTP.write_data(CONEXAO, 'Content-Type: text/html; charset="UTF-8"' || utl_tcp.CRLF ); end if; send_header('From',ds_email_origem_w); --se denominou o destino formata o envio , senão vai o proprio email --tratamento diferente do "from" pois este é em geral dinamico --feito pela stored procedure chamadora if trim(p_nome_destino) is null then send_header('To',vs_para); else send_header('To','"'||trim(p_nome_destino)||'" <'||vs_para||'>'); end if; If Trim(vs_cc) is not null Then--copia (nao formata o destino) send_header('CC',vs_cc); end if; send_header('BCC',vs_origem);---<<< A LINHA COM PROBLEMA PARECE SER ESTA *********************** FOR i IN 0 .. TRUNC((DBMS_LOB.getlength(p_attach_clob) - 1 )/l_step) LOOP UTL_SMTP.WRITE_DATA(CONEXAO, DBMS_LOB.substr(p_attach_clob, l_step, i * l_step + 1)); END LOOP; UTL_SMTP.CLOSE_DATA(CONEXAO); UTL_SMTP.QUIT (CONEXAO); Exception when OTHERS then utl_smtp.quit (conexao); p_log := 'Erro: ' || SQLERRM; END ENVIA_EMAIL_CLOBHBC;
  15. Estou com um problema com esse esse script abaixo: tenho um checkbox na minha página ( não em relatório, na página mesmo, um item de página) e gostaria que o mesmo ao ser clicado e pressionado um botão submit realizasse o procedimento do script, porém ele faz o processo mas não me retorna nada. acredito que o problema seja no LOOP do APEX_APPLICATION.G_F01 . Alguém consegue me ajudar com isso? DECLARE V_DS_COLAB VARCHAR2(50); BEGIN APEX_DEBUG.MESSAGE('CHECK:'|| vCHECK); FOR A IN 1 .. APEX_APPLICATION.G_F01.COUNT LOOP BEGIN SELECT C.DS_COLABORADOR INTO V_DS_COLAB FROM COLABORADOR C WHERE C.USER_APEX = V('APP_USER') ; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR(-20001,'NENHUM REGISTRO ENCONTRADO!'); WHEN TOO_MANY_ROWS THEN RAISE_APPLICATION_ERROR(-20002,'MAIS QUE UM REGISTRO ENCONTRADO!'); WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20003,'ERRO NAO PREVISTO' || SQLERRM) ; END; :P12_SUPER := (V_DS_COLAB || ' - ' || TO_CHAR(SYSDATE,'DD/MM/RRRR HH24:MI')); UPDATE COMPETENCIA_COLABORADOR CC SET FINALIZADO_SN = 'S' WHERE CC.CD_EQUIPE = :P12_EQUIPE AND CC.CD_COMPETENCIA = (SELECT C.CD_COMPETENCIA FROM COMPETENCIA C WHERE TO_DATE(LPAD(C.MES_COMPETENCIA,2,'0') || '/' || C.ANO_COMPETENCIA,'MM/RRRR') = TO_DATE(:P12_COMPETENCIA,'MM/RRRR')); END LOOP; END;
  16. RAFAEL C D EMELO

    [Resolvido] Cálculo de datas

    Ola galera estou com uma duvida sou novo trabalhando com Oracle e preciso calcular A diferenca entre datas no caso seria Ver as datas de um contrato e primeiramente calcular se ele esta ativo no mes nesse se sim ele precisaria calcular quantos dias ele esta ativo NO mesmo por exemplo ele pode ter iniciado o contraro no dia 1 ou no dia 16 ai calcularia os dias que ele precisa me pagar pelo seguro mas estou com duvidas de como posso calcular A quantidades de dias nesse caso se alguém puder ajudar fico muito agradecido.
  17. Viniciusr9

    Horas entre datas

    Boa tarde pessoal, basicamente eu preciso do retorno de horas entre duas datas, porém tenho condições a tratar . basicamente tenho 2 colunas ( dt_fim e dt_ini ) que representam data final e data inicial. Preciso da diferença entre as duas retornada em uma outra coluna (hr_ausencias) , porém a cada dia posso computar no máximo 9 horas, e desconsiderar finais de semana e feriados( esses cadastrados em uma tabela) . Seria melhor tratar isso com uma Trigger , um Script PL/SQL , como me sugerem? Agradeço quem puder ajudar.
  18. Boa tarde pessoal, Sei que tem varios tópicos sobre esse erro, porém analisei todos e nenhum foi aplicável ao meu caso ( a maioria era porquê o pessoal esquecia do Group By ao final das Querys) . Se alguém puder ajudar, agradeço . Os campos sem função estão inseridos no group by, porém o erro persiste . SELECT * FROM( select LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA AS PROJETO, E.DS_EQUIPE as EQUIPE, SUM(NVL((CC.QT_HORAS_CHEIA - SUM(AU.DT_FIM - AU.DT_INI)*24 ),CC.QT_HORAS_CHEIA)) as "ESFORÇO CALCULADO" from EQUIPE E, COLABORADOR C1, COMPETENCIA C, COMPETENCIA_COLABORADOR CC, AUSENCIAS AU where E.CD_EQUIPE=CC.CD_EQUIPE and C.CD_COMPETENCIA=CC.CD_COMPETENCIA and C1.CD_COLABORADOR=CC.CD_COLABORADOR and C1.STATUS = 1 AND C1.CD_GESTOR <> C1.CD_COLABORADOR AND AU.CD_COLABORADOR (+) = C1.CD_COLABORADOR GROUP BY E.DS_EQUIPE, LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA ) VT WHERE VT.PROJETO = ((select to_char(sysdate, 'MM') from dual)||'/'||(select to_char(sysdate, 'RRRR') from dual))
  19. Prezados, boa tarde! Preciso de uma ajuda sendo possível: Tenho o seguinte cenário em uma consulta ( formação de kits de produtos tendo como produto principal um valor igual, ex: produto 1 é formado pelos produtos 2 e 3) select codkit, produtos from kit where codkit = 1 --- ---- 1 2 1 3 Percebem que o resultado traz o codigo do kit (1) e os produtos que compoem este kit (2,3), porem o produto 2 tambem faz parte do kit 4 junto com o produto 10 e produto 3 faz parte do kit 5 junto com o produto 11 sendo: kit 1 (2,3) kit 4 (2,10) kit 5 (3,11). Eu preciso de uma ajuda sobre alguma função que ao comprar os produtos 2 e 3 e estes estando na mesma nota fiscal (select produtos from notafiscal = x) traga o resultado do kit que estes dois produtos juntos formam, exemplo, ao pesquisar (select produtos from notafiscal = x) nesta nota existir os produtos 2 e 3 traga o resultado 1, se na nota existir os produtos 2 e 10 traga o resultado 4 e se existir na consulta dos itens da nota os itens 3 e 11 o resultado seja 5. Caso na pesquisa eventualmente existir por exemplo 10 unidades do item 2, 5 unidades do item 3 e 5 unidades do item 10, o resultado deve ser 1 e 4 pois 5 unidades do 2+5 unidades do 3 forma o kit 1 e 5 unidades do 2+ 5 unidades do 10 formam o kit 4. Espero ter explicado de forma a ser entendido e agradeço a ajuda.
  20. estou tentando fazer a conexão ao banco de dados oracle 11g no delphi 10.2 pelo fireDAC e está reportando o seguinte erro ao conectar:[FireDAC][Phys][Ora] Ora-12546: TNS: permission denied.já mandei para o DBA para verificar e ainda não consegui o retorno, fiz o teste conectando em outro banco de dados por exemplo do firebird e conectou ok...Alguém saberia me disse qual seria esta permissão para resolver o problema???
  21. alextds

    sql para rank das 5 maiores vendas

    olá gostaria de saber como fazer para obter o rank das 5 maiores vendas. tenho a seguinte tabela: data produto valor 31/01/2018 calça 100 31/01/2018 calça 50 31/01/2018 camisa 30 31/01/2018 camisa 30 31/01/2018 sapato 75 31/01/2018 bermuda 100 31/01/2018 meia 10 31/01/2018 tenis 65 31/01/2018 luva 20 31/01/2018 luva 20 31/01/2019 calça 100 31/01/2019 calça 50 31/01/2019 camisa 30 31/01/2019 camisa 30 31/01/2019 sapato 75 31/01/2019 bermuda 100 31/01/2019 meia 10 31/01/2019 tenis 65 31/01/2019 luva 20 31/01/2019 luva 20 Preciso que totalize os valores de acordo a data e produto e que apareça somente os 5 primeiros dessa forma : data produto valor rank 31/01/2018 calça 150 1 31/01/2018 bermuda 100 2 31/01/2018 sapato 75 3 31/01/2018 tenis 65 4 31/01/2018 camisa 60 5 31/01/2019 calça 150 1 31/01/2019 bermuda 100 2 31/01/2019 sapato 75 3 31/01/2019 tenis 65 4 31/01/2019 camisa 60 5 Se alguém tiver uma solução facil agradeço.
  22. Script com retorno de dias uteis no mês ( desconsiderando finais de semana e feriados também ( os mesmos cadastrados em uma tabela )), ajuda! Boa tarde, alguém poderia me ajudar , tentei com alguns que vi pela net , fazendo alterações mas não consegui o que gostaria ainda. Preciso de um script que dado um valor (mês/ano) ele retorne a quantidade de dias uteis nesse mês, desconsiderando os sabados e domingos e os feriados listados na tabela de feriados, em Oracle Sql puro ou PL/SQL . Agradeço pela ajuda!
  23. Carolm

    Validação de CNPJ com PL/SQL

    Boa Noite, tenho que solucionar um exercício de PL/SQL ,onde devo encontrar um algorítimo/código para poder analisar um CNPJ ,que sera informado pelo usuário,o SQL Developer deve realizar o cálculo para pegar os dígitos validadores desse CNPJ, e por fim analisar se ele é válido ou inválido e no console apresentar o texto : Valido ou inválido dependendo do resultado obtido com o calculo! Nesse exercício sera aberta uma "tela" que vai pedir pro usuário digitar o numero do CNPJ,esse CNPJ sera capturado e analisado através de um calculo de validação de CNPJ (ira analisar os dígitos verificadores) e com o resultado ele ira informar ao usuário se o numero é VALIDO ou INVALIDO! Enunciado : CRIE UM BLOCO ANÔNIMO PL/SQL ORACLE QUE IRÁ SOLICITAR PARA O USUÁRIO O NÚMERO DO: CNPJ - BLOCO ANÔNIMO-DÍGITO VERIFICADOREu rodei o código abaixo o SQL informou que a função foi compilada,porém não aparece a mensagem dizendo se o numero informado é válido ou inválido...Será que poderiam me ajudar ? set serveroutput on ACCEPT CNPJ PROMPT 'Digite o numero do CNPJ' CREATE OR REPLACE FUNCTION CNPJ (p_cgc IN CHAR) RETURN BOOLEAN IS m_total NUMBER := 0; m_digito NUMBER := 0; BEGIN FOR i IN 1..4 LOOP m_total := m_total + substr(p_cgc,i,1) * (6 - i); END LOOP; FOR i IN 5..12 LOOP m_total := m_total + substr(p_cgc,i,1) * (14 - i); END LOOP; m_digito := 11 - mod(m_total,11); IF m_digito > 9 THEN m_digito := 0; END IF; IF m_digito != substr(p_cgc,13,1) THEN RETURN FALSE; END IF; m_digito := 0; m_total := 0; FOR i IN 1..5 LOOP m_total := m_total + substr(p_cgc,i,1) * (7 - i); END LOOP; FOR i IN 6..13 LOOP m_total := m_total + substr(p_cgc,i,1) * (15 - i); END LOOP; m_digito := 11 - mod(m_total,11); IF m_digito > 9 THEN m_digito := 0; END IF; IF m_digito != substr(p_cgc,14,1) THEN RETURN FALSE; END IF; RETURN TRUE; IF CNPJ(14) = TRUE THEN DBMS_OUTPUT.PUT_LINE('VERDADEIRO'); ELSE DBMS_OUTPUT.PUT_LINE('FALSO'); END IF; END; /
  24. johnklo

    Criar uma "procedure"

    COM BASE NA TABELA HR DO ORACLE Preciso criar uma sub-rotina (procedure) que imprima na tela o número de funcionários (employees) agrupados por departamentos (department_id). Deve-se ordenar a saída em ordem decrescente pela quantidade de departamentos. Pode-se utilizar qualquer forma de cursor para imprimir o resultado.
  25. EREGON

    Função PL/SQL com erro

    Olá, ao chamar a função, estou a receber o erro: "ORA-01422: extracção exacta devolve mais que o número pedido de linhas" create or replace FUNCTION "CALC_ADDT_SIM_DISC" (ACCT_INPUT VARCHAR2) RETURN VARCHAR2 IS SIM_MSISDN VARCHAR2(20); BEGIN SELECT CASE WHEN ADDT_DISC_1 = 1 THEN mu.MSISDN WHEN ADDT_DISC_1 > 1 THEN (SELECT DISTINCT t02.MSISDN FROM CDM.DMKV_TRANSP_VAR_RESULT_02 t02 WHERE SERV_ACCT_OLDER_MSISDN_FLG = 'Y' AND PRICING_PLAN_TYPE IN ('valor1', 'valor2') AND t02.DW_SERV_ST_ID='100000003' AND t02.CUST_ACCT_EXT_KEY = ACCT_INPUT ) END MSISDN_ADDT_DISC INTO SIM_MSISDN FROM( SELECT DISTINCT CUST_ACCT_EXT_KEY, COUNT(CUST_ACCT_EXT_KEY) AS ADDT_DISC_1 FROM MOBILE_UPSELL WHERE FLAG_ADDITIONAL_SIM_DISCOUNT = '0' GROUP BY CUST_ACCT_EXT_KEY )t, MOBILE_UPSELL mu WHERE t.CUST_ACCT_EXT_KEY = mu.CUST_ACCT_EXT_KEY AND t.CUST_ACCT_EXT_KEY = ACCT_INPUT; RETURN SIM_MSISDN; END; O que estou a fazer de errado? Obrigado
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.