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. Galera me foi solicitado a criação de um servidor web, para disponibilizar serviços para os clientes. O que vocês recomendam? Tenho um servidor da DELL com windows 2016. Todo o desenvolvimento será em PHP, Javascript e companhia Ltda com conexão aos bancos de dados Mysql, SQL e ORACLE. Já temos um servidor que será desativado porém está utilizando uma versão muito antiga de PHP 5.4 e como base de instalação foi utilizado o WampServer.
  2. Envio de https via Oracle Versão Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production PL/SQL Release 12.2.0.1.0 - Production "CORE 12.2.0.1.0 Production" TNS for Linux: Version 12.2.0.1.0 - Production NLSRTL Version 12.2.0.1.0 - Production Obs 1) Wallet Instalado Obs 2) O problema não seria reproduzível por questões de segurança Obs 3) Já tentei com o fornecedor Tento enviar um POST via PLSQL e recebo o seguinte erro : Erro : ORA-24263: Certificate of the remote server does not match the target address. Pergunta Como posso saber o valor de req := utl_http.begin_request(url, 'POST',https_host =>'???????'); ? é obrigatório ? create or replace PROCEDURE "SMS_ENVIO2" (PNUMSMS IN VARCHAR2 , PTEXTO IN VARCHAR2 , PRETORNO OUT VARCHAR2) /*alguns dados ocultos*/ AS req utl_http.req; res utl_http.resp; url varchar2(4000) := 'https://messaging.o2c.cloud/api/v2/sms/';--acho que posso citar o site name varchar2(4000); buffer varchar2(4000); content varchar2(4000); VS_USUARIO VARCHAR2(11) := '*****'; VS_SENHA VARCHAR2(20) := '*****'; VS_SERIAL VARCHAR2(8);--VARCHAR2(100); VS_SCHEDULLE VARCHAR2(16) := TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI'); VS_AUTHOR_64 VARCHAR2(20) := '*********'; begin UTL_HTTP.SET_WALLET('file:.....', '**********'); -- VS_SERIAL := LPAD(SMSENVIO_SERIAL_SEQ.NEXTVAL,8,'0'); content := ' { ' || ' "sendSmsRequest": {' || ' "to": "' || PNUMSMS ||'",' || ' "message": "' || PTEXTO || '",' || ' "id": "' || VS_SERIAL || ' }' || ' } '; -- dbms_output.put_line(url); dbms_output.put_line(content); -- --req := utl_http.begin_request(url,'POST'); req := utl_http.begin_request(url, 'POST',https_host =>'???????'); utl_http.set_header(req, 'Content-Type', 'application/json'); utl_http.set_header(req, 'Content-Length', length(content)); utl_http.set_header(req, 'Authorization', 'Basic ' || utl_encode.base64_encode(VS_AUTHOR_64)); -- utl_http.write_text(req, content); res := utl_http.get_response(req); begin loop utl_http.read_line(res, buffer); end loop; utl_http.end_response(res); exception when utl_http.end_of_body then utl_http.end_response(res); end; dbms_output.put_line('retorno ' || buffer); exception when others then PRETORNO := 'Erro : ' || UTL_HTTP.GET_DETAILED_SQLERRM; end;
  3. Boa tarde pessoal. Estou travado em uma parte do select do qual preciso somar os valores de todos os registros da coluna, e usa-lo como base de calculo para outra coluna SELECT PRODUTO, HORAS, QTDE, VARIACAO FROM DUAL Meu select está retornando algo assim: PRODUTO | HORAS | QTDE | VARIACAO A | 2 | 20 | 5 B | 6 | 25 | 3 C | 5 | 70 | 9 D | 8 | 30 | 2 -------------------------------------------------------- Total | 21 | 145 | Preciso criar uma nova coluna com a formula (Total Qtde / Total horas) * variação ficando assim: PRODUTO | HORAS | QTDE | VARIACAO | CONTA A | 2 | 20 | 5 | 34.52 B | 6 | 25 | 3 | 20.71 C | 5 | 70 | 9 | 62.14 D | 8 | 30 | 2 | 13.80 A forma que estou tentando fazer é via subselect, mas ele não agrupa todas as linhas, e somente o registro da linha atual. SELECT PRODUTO, HORAS, QTDE, VARIACAO, (SELECT (SUM(QTDE) / SUM(HORAS)) * VARIACAO) AS CONTA FROM DUAL Dessa forma me retorna o seguinte resultado, como se estive calculando somente a linha atual e não toda a coluna. PRODUTO | HORAS | QTDE | VARIACAO | CONTA A | 2 | 20 | 5 | 50 B | 6 | 25 | 3 | 12.5 C | 5 | 70 | 9 | 126 D | 8 | 30 | 2 | 7.5 Espero que eu tenha conseguido explicar minha necessidade de forma que de para entender.
  4. Salve galera estou com uma consulta, e preciso buscar a diferença entre datas, e em alguns casos são vários dias. Preciso que nesta consulta ele me retorne em dias, horas limitando a 23h minutos e segundos.. A consulta que fiz foi essa: abs(trunc((AK1.DATA_FINAL - AK1.DATA_INICIAL))) AS dias, abs(trunc(24 * (AK1.DATA_FINAL - AK1.DATA_INICIAL))) AS horas, abs(trunc((MOD(MOD(AK1.DATA_FINAL - AK1.DATA_INICIAL, 1) * 24, 1) * 60))) AS minutos, abs(trunc((MOD((MOD(MOD(AK1.DATA_FINAL - AK1.DATA_INICIAL, 1) * 24, 1) * 60), 1) * 60))) AS segundos, ou essa aqui LPAD(TRUNC(( (AK1.DATA_FINAL - AK1.DATA_INICIAL) * 86400 / 3600)), 3, '0') ||':' || LPAD(TRUNC(MOD( (AK1.DATA_FINAL - AK1.DATA_INICIAL) * 86400 , 3600 ) / 60 ), 2, '0') || ':'|| LPAD(TRUNC(MOD(MOD( (AK1.DATA_FINAL - AK1.DATA_INICIAL) * 86400, 3600 ), 60)), 2, '0') calculado, e nessa duas consultas ele me traz o total de horas o que complica. DIAS HORAS MINUTOS SEGUNDOS CALCULADO 0 6 1 10 006:01:11 0 0 31 28 000:31:28 0 1 5 8 001:05:09 0 0 41 2 000:41:02 0 4 59 53 004:59:53 0 0 41 6 000:41:06 0 4 59 20 004:59:20 0 0 56 1 000:56:01 0 0 26 31 000:26:31 0 6 10 3 006:10:03 0 0 40 1 000:40:01 0 4 59 53 004:59:53 0 6 3 27 006:03:27 0 6 3 7 006:03:07 0 1 5 57 001:05:58 10 250 28 21 250:28:21 10 250 18 37 250:18:37 0 4 58 42 004:58:43 Alguem poderia me dar uma força
  5. Beleza? seguinte, tivemos problema com o servidor que pegou fogo, foi recuperado, porém não estou conseguindo compilar uma view se eu executo: select * from v_view , funciona se eu executo a query da view, também funciona select 1 campo from dual Porém, quando tento recompilar a view, dá erro create or replace view v_view as select 1 campo from dual No caso, minha query tem várias tabelas, estava dando esse erro numa tabela, consegui solucionar com o comando grant select on owner1.tabela to owner2 with grant option; Mas para a segunda tabela, esse comando não funcionou. executei o revoke e depois novamente o grant e também não foi REVOKE all ON owner1.tabela FROM owner2; Isso é em ambiente de homologação e percebi que o campo grantable está YES e em produção está setado para NO com o comando abaixo e em produção está funcionando, consigo compilar a view select * from user_tab_privs where table_name = 'tabela' Alguém tem idéia do que pode ser? o que é que está pegando? Obrigado
  6. MarcosAntonio

    Manipulação e leitura campo blob

    Boa tarde !estou carregando um arquivo texto numa variável BLOB e preciso manipular em loop, para ler linha a linha e aplicar os SUBSTRs para inserir no banco, mas não sei como fazer o loop, a interação entre as linhas e quando saber o momento de sair do loop, alguém pode me ajudar?ex do conteúdo do BLOB: 2AAA02012021123421 2AAA02012021213453 2AAA02012021105413 quero por exemplo retirar a informação da linha 2 a partir do quarto caracter e parando no decimo segundo caracteres
  7. Oracle is moving its headquarters from Silicon Valley to Austin, Texas
  8. Thiago Btos

    Select - maior registro

    Boa tarde galera. Fiz um select que tras 4 informações do banco (matricula, nome, data e hora) SELECT QD1_MAT, RA_NOME, QD1_DTBAIX AS DATA, QD1_HRBAIX FROM QD1010 QD1 INNER JOIN SRA010 SRA ON RA_MAT = SUBSTR(QD1_MAT, 5) AND SRA.D_E_L_E_T_ <> '*' ORDER BY QD1_DTBAIX, QD1_HRBAIX Retornando os seguintes registros: Preciso retornar somente as linhas em amarelo, que seria a seguinte condição. Caso tiver alguma matricula igual, trazer somente o registro com a maior data, junto com seu respectivo horário. O mais próximo que consegui chegar foi utilizando o MAX para data e hora, e agrupando o restante dos campos. SELECT QD1_MAT,RA_NOME,MAX(DATA), MAX(QD1_HRBAIX) FROM ( SELECT QD1_MAT, RA_NOME, QD1_DTBAIX AS DATA, QD1_HRBAIX FROM QD1010 QD1 INNER JOIN SRA010 SRA ON RA_MAT = SUBSTR(QD1_MAT, 5) AND SRA.D_E_L_E_T_ <> '*' ) GROUP BY QD1_MAT,RA_NOME Porém na hora ele não pega o valor correspondente e sim o valor máximo. Ai estou travado nessa parte, como faço para trazer a hora corresponde sem o restante dos registros?
  9. mr22robot

    Select com condição

    Boa tarde. Estou com o seguinte problema: Preciso retornar um selct da seguinte maneira: exemplo que não funciona: select codusur,numnota,codcli,cliente,vltotal,numtransvenda,dev,decode(vlvenda),if(vlvenda > 100 then 1 else 2) from( select tb1.codusur,tb1.numnota,tb1.codcli,tb1.cliente,tb1.vltotal,tb1.numtransvenda,DECODE(tb2.VLTOTAL,NULL,0,tb2.VLTOTAL)DEV from( select codusur,numnota,pcnfsaid.codcli,pcnfsaid.cliente,pcnfsaid.vltotal,pcnfsaid.numtransvenda from pcnfsaid where pcnfsaid.dtsaida > '01-OCT-2020' and pcnfsaid.dtcancel is null )tb1 left outer join (select DISTINCT VLTOTAL,VW_INTEGRA_DEVOLUCAO_TOTAL.NUMTRANSVENDA from VW_INTEGRA_DEVOLUCAO_TOTAL )tb2 on tb1.NUMTRANSVENDA = tb2.NUMTRANSVENDA order by numnota ) Como pode reparar, eu usei um if/else já que não sei a forma correta de usar. Pois com DECODE não consegui usar uma forma de fazer a comparação. Pois preciso mesmo retornar uns valores fixos. Ex: Se o valor > 40000, retorna um valor x; Se for maior que 5000 retorna um valor y. Aguardo a ajuda dos amigos. Grato
  10. MarcosAntonio

    Select com limitação de soma de valores

    boa tarde. Estou precisando de um Select que retorne uma soma que ao chegar a determinado valor ela reinicie e continue fazendo sucessivamente select pedido, volume, limite, SUM(volume) over (order by pedido ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) saldo from pedidos group by pedido o select está retornando assim porém quero que toda vez que chegue ou passe do limite resete o saldo, por exemplo parar no 100 que é o limite e começar um novo saldo pedido volume limite saldo 1 70 100 70 2 10 100 80 3 20 100 100 4 50 100 150 5 30 100 180 preciso que ele soma o volume enquanto o saldo seja <= que o "limite", quando passar pare de somar e comece outra soma começando do 0, como no exemplo abaixo. pedido volume limite saldo 1 70 100 70 2 10 100 80 3 20 100 100 4 50 100 50 5 30 100 80
  11. fabiorazevedo

    Ajuda urgente

    Boa noite, comecei a pouco a trabalhar com banco oracle, e vem acontecendo uma coisa muito estranha, pelo menos uma vez por semana o banco para, da erro de no listener, nas maquinas e preciso reiniciar o servidor (windows server 2016). olhando no alert não encontro nada, pela falta de experiencia, que possa parecer pertinente ao problema.
  12. TikTok evita bloqueio graças a acordo com Oracle e Walmart
  13. gcors88

    Gatilho com inserção simultânea

    Prezados, desenvolvi um gatilho onde este tem comunicação com outra tabela, uma é a coleta_sinal_vital, e onde o gatilho foi criado é na table itcoleta_sinal_vital ( esta possui uma fk da primeira), a questão é que dentro do gatilho realizo um select na primeira tabela para consultar o valor inserido em uma coluna da primeira tabela, faço essa consulta baseada nessa fk que esta sendo inserida ou seja where = :new.cd_coleta_sinal_vital, a questão é que no momento em que esse select é executado ele não retorna dado nenhum, acredito que isto ocorre porque a inserção em ambas as tabelas é feito de forma simultânea, pois se comparado posteriormente o valor da coluna sempre é inserido, gostaria de saber se existe alguma forma de aplicar uma espera ou atraso neste gatilho para que ele possa capturar este valor sem problemas, grato!
  14. NaPraia

    Sequence perde o grant

    Olá pessoal, Estou com um probleminha, eu tenho uma sequence criado num owner (owner_a), executei o comando para criar em outro owner(owner_b): grant all on sequence_a to owner_b e consegui usar, só que no dia seguinte esse grant sumiu e deu erro: ora-00942: tabela ou view não existe. No owner_a funciona corretamente. voltei a executar o comando de grant de funcionou de boa mas de ontem para hoje ocorreu novamente E acontece só para essa sequence, as outras do banco, não têm problema, funcionam normalmente Eu até pensei em dar um drop e criar de novo mas fico com receio que possa ter algum impacto no sistema que é daqueles que ninguém gosta de mexer, "tá funcionando, não mexe" E acontence nos dois ambiente, homologação e produção. Obrigado
  15. NaPraia

    FK de diferentes tipos

    buenas no sistema eu tenho uma tabela A com um campo que é do tipo NUMBER um outro sistema, tem uma tabela B que se relaciona com esse campo da tabela A, é que é do tipo NUMBER(19,2) Se relacionam corretamente mas não foi possível criar a constraint de FK não estou pensando em alter table pois pode gerar um caos no sistema verificar por trigger se já existe? obrigado
  16. Salve galera estou com um problema em uma consulta no banco de dados. Preciso trazer um xml de um campo porém tem alguns lançamentos que estão com mais de 4000 caracteres, estou usando para a pesquisa o seguinte select SELECT ID_WS_GATEWAY, ID_WS_CONFIG, STATUS, ERRCODE, ERRMSG, FOLDER, FILENAME, DATE_IN, DATE_ON, SITE, WS, DBMS_LOB.SUBSTR(T.XMLDATA.getClobVal(),4000,1) XMLDATA, DIRECTION FROM WS_GATEWAY T Tem alguma outra forma de buscar uma quantidade maior neste campo?
  17. Olá, Estou enfrentando o seguinte problema. Tenho uma aplicação web desenvolvida por terceiros rodando no CentOS Linux e consultando um banco Oracle. O banco Oracle está configurado da seguinte forma: NLS_LANGUAGE = BRAZILIAN PORTUGUESE NLS_TERRITORY = BRAZIL NLS_CHARACTERSET = WE8ISO8859P1 NLS_NCHAR_CHARACTERSET = AL16UTF16 Quando realizo uma query SQL a partir da aplicação no servidor CentOS em questão o caracteres de acentuação vêm modificados. Tentei elaborar a query com o comando CONVERT, como abaixo: Sintaxe: CONVERT(string_expression,to_data_set[,from_data_set]); ex: SELECT CONVERT( 'Ä Ê Í', 'US7ASCII', 'WE8ISO8859P1' ) FROM DUAL; No meu caso, estou tentando: SELECT CONVERT (expressao, 'UTF8', 'WE8ISO8859P1') FROM ... Porém não consigo encontrar a combinação correta de to_data_set e from_data_set. Alguma sugestão? Inclusive de uma abordagem diferente dessa do uso do CONVERT. Agradeço. --ASF
  18. Pedro Vinicius Miguel Dias

    Problema na criação de uma nova conexão com o BD

    Pessoal, estou estudando o Banco de Dados Oracle e estou tendo um problema pra criar uma nova conexão. Durante o curso, o instrutor pede que eu crie duas conexoes, a TESTE com a senha: teste e a PRATICA com a senha :pratica... cada uma com uma senha e etc e elas funcionam. Eu por minha conta quis criar outra conexão com outro nome e outra senha, Ex. (User TESTE2 e senha: teste2) e ao testar, o Banco não conecta. Erro ORA-01017. Alguém consegue me ajudar?
  19. Matsuura

    [Resolvido] Usuario Scott

    Estou tentando criar o usuário o Scott, e na internet encontro bastante tutoriais para instalação do HR, para o scott dois que me referenciei foram: https://www.profissionaloracle.com.br/swillians/forums/topic/usuario-scott-tiger-banco-oracle-10g-express-edition-xe/ https://docs.oracle.com/database/121/COMSC/installation.htm#COMSC00007 no primeiro link que tentei seguir não encontrei após a intalação o arquivo "demobld.sql"estou enviando a imagem com nome "sql1" e "sql2" que mostram a minha tentativa de instalação, com as mensagens de erros que me retornaram, no segundo link mostra as instalações de schemas, mas não mostra especificamente o Scott. Espero que possam me ajudar, estou a mais de duas semanas tentando sem exito.
  20. NaPraia

    Gerar arquivo em PDF

    Buenas, alguém já gerou arquivo em pdf? eu já usei utl_file e text_io para gerar excel mas para pdf não sei se dá, sabem? tenho pesquisado e falam do BI Publisher, já usaram?
  21. Olá, Gostaria de fazer uma query mas o retorno ou vem ou não vem dados. Vou citar exemplos. Me ajudem PF se o melhor caso é union ou outro? 1) Tabela 1 e tabela 2 com campos distintos e um campo em comum com Join no campo card. Resultado: No meu select qdo tem dados nas 2 tabelas então retornam todos em comum em uma única linha. Tabela 1(id, card) 1, xxx 2, yyy 3, zzz Tabela 2 (id, card, fraude) 1, xxx, sim 2, yyy, sim 3, zzz, pendente Select a.id, a.card, b.card, b.fraude from t1 a,t2 b where a.card=b.card; Retorno: Id,Card,Card,fraude 1, xxx,xxx,sim 2, yyy,yyy,sim 3, zzz,zzz,pendente O problema é qdo na tabela 2 não tem o dado: 2)Tabela 1 e tabela 2 com campos distintos e um campo em comum com Join no campo card. Resultado: No meu select qdo tem dados na tabela 1 e não tiver dado na tabela 2 então retornam linha que só tem na tabela 1. Tabela 1(id, card) 1, xxx 2, yyy 3, zzz 4,xyz Tabela 2 (id, card, fraude) 1, xxx, sim 2, yyy, sim 3, zzz, pendente Select a.id, a.card, b.card, b.fraude from t1 a,t2 b where a.card=b.card; Retorno: Id,Card,Card,fraude Nenhuma linha Ou não estou certo, retorna igual ao exemplo1: 1, xxx,xxx,sim 2, yyy,yyy,sim 3, zzz,zzz,pendente Pergunto, neste exemplo 2 como faço pra retornar somente todas as linhas e se não tiver a linha na tabela 2 ficar com estes campos null? Desta forma; Retorno: Id,Card,Card,fraude 1, xxx,xxx,sim 2, yyy,yyy,sim 3, zzz,zzz,pendente 4,xyz,null,null Ou no lugar de null, ficar vazia as colunas REF a tabela 2. Na vdd são exemplos, mas a qtd de Join é mais complexos Muito obrigado!!!!
  22. José Peixoto

    Disparo ordenado de triggers

    Olá, há alguma forma de fazer uma trigger só ser executada depois que a outra executar? Por exemplo: a trigger2 só é disparada quando a trigger1 fizer o commit das informações. Obrigado desde já :)
  23. Estou com a seguinte situação: No Mysql eu consegui fazer em "insert into" de uma única vez, com vários registros, conforme abaixo: insert into prefeitos (nome, cidade_id) VALUES ('Rodrigo Neves', 2), ('Caique Rosa Baldran', 9), ('Raquel Lira', 11), ('Maísa Albuquerque Sain', 12), ('Zenaldo Coutinho', null); Porém, no Oracle 12C, usando a mesma forma que no Mysql, está dando o seguinte erro: insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '279', 'U', '5', '0', '0', '1360', '13730', '100', '31058', '100'), ('800', 'S0001', '280', 'U', '5', '0', '0', '1360', '13730', '100', '31060', '100'), ('800', 'S0001', '281', 'U', '5', '0', '0', '1360', '13730', '100', '31202', '100'), ('800', 'S0001', '282', 'U', '5', '0', '0', '1360', '13730', '100', '31203', '100'); ORA-00933: comando SQL não encerrado adequadamente Será que a sintaxe no Oracle é diferente? Eu sei que assim funciona perfeitamente: insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '279', 'U', '5', '0', '0', '1360', '13730', '100', '31058', '100'); insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '280', 'U', '5', '0', '0', '1360', '13730', '100', '31060', '100'); insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '281', 'U', '5', '0', '0', '1360', '13730', '100', '31202', '100'); insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '282', 'U', '5', '0', '0', '1360', '13730', '100', '31203', '100'); Porém, eu tenho uma tabela com quase 100.000 registros e gostaria de fazer em um único "insert". Eu uso o PL/SQLDeveloper e quando faço o "insert" da forma acima, com vários "insert into", ele abre um novo documento para cada "insert into", nisso ele trava, fica horas rodando o "insert" e não conclui se for em um único "insert" como no Mysql, creio que não pesaria tanto. Tem uma forma mais fácil de fazer o "insert into" com muitos dados envolvidos? Desde já agradeço.
  24. E ai pessoal! Estou desenvolvendo uma procedure e estou com dificuldade para validar um campo. É seguinte, preciso verificar se o campo contem um registro, se contem, realiza o update concatenando com o registro de entrada e se não conter registro, apenas faça o update com o registro de entrada. Obs: Esse campo é separado por virgula. Segue o meu código: CREATE OR REPLACE PROCEDURE SP_VINCULO ( P_COD_MATRIZ IN TB_EDIEXT_PERFIL.COD_MATRIZ%TYPE, P_CONCIL IN TB_EDIEXT_PERFIL.CONCIL%TYPE, P_ID_MBX IN TB_EDIEXT_PERFIL_MBX.ID_MBX%TYPE, P_ID_CONCIL INT, P_DIR_DEST VARCHAR2, P_PROTOCOLO VARCHAR2 ) IS V_EC TB_EDIEXT_PERFIL.CONCIL%TYPE; V_REG_CONCIL NUMBER(1); V_CONCIL_EC VARCHAR(10); CONTEM_EC EXCEPTION; CONTEM_REG EXCEPTION; CURSOR VERIFICA_EC IS SELECT P_CONCIL FROM TB_EDIEXT_PERFIL WHERE CONCIL = 'EC'; CURSOR VERIFICA_CONCIL IS SELECT CONCIL FROM TB_EDIEXT_PERFIL WHERE CONCIL = 'EC'; BEGIN INSERT INTO TB_EDIEXT_PERFIL_MBX VALUES (PERFIL_MBX.nextval, (SELECT ID FROM TB_EDIEXT_PERFIL WHERE COD_MATRIZ = P_COD_MATRIZ), (SELECT ID FROM TB_EDIEXT_MBX WHERE MBX = 'MB'||P_CONCIL)); IF P_PROTOCOLO = 'SFTP' THEN INSERT INTO TB_EDIEXT_PERFIL_SFTP VALUES (PERFIL_SFTP.nextval, (SELECT ID FROM TB_EDIEXT_PERFIL WHERE COD_MATRIZ = P_COD_MATRIZ), P_ID_CONCIL, P_DIR_DEST); UPDATE TB_EDIEXT_PERFIL SET SFTP = 1 WHERE COD_MATRIZ = P_COD_MATRIZ; ELSE INSERT INTO TB_EDIEXT_PERFIL_CD VALUES (PERFIL_CD.nextval, (SELECT ID FROM TB_EDIEXT_PERFIL WHERE COD_MATRIZ = P_COD_MATRIZ), P_ID_CONCIL, P_DIR_DEST, NULL); UPDATE TB_EDIEXT_PERFIL SET CD = 1 WHERE COD_MATRIZ = P_COD_MATRIZ; END IF; OPEN VERIFICA_EC; FETCH VERIFICA_EC INTO V_EC; IF P_CONCIL = 'EC' THEN RAISE CONTEM_EC; END IF; SELECT CASE WHEN EXISTS ( SELECT CONCIL FROM TB_EDIEXT_PERFIL WHERE CONCIL LIKE P_CONCIL) THEN 1 ELSE 0 END AS VERIFICA_CONC INTO V_REG_CONCIL FROM DUAL; IF V_REG_CONCIL = 1 THEN RAISE CONTEM_REG; END IF; OPEN VERIFICA_CONCIL; FETCH VERIFICA_CONCIL INTO V_CONCIL_EC; -- NESTA ETAPA ESTOU VERIFICANDO SE O CAMPO É = 'EC', SE FOR ELE FAZ APENAS O UPDATE SUBSTITUINDO PARA O P_CONCIL DE ENTRADA IF V_CONCIL_EC = 'EC' THEN UPDATE TB_EDIEXT_PERFIL SET CONCIL = P_CONCIL WHERE COD_MATRIZ = P_COD_MATRIZ; -- AQUI DEVERIA FAZER O UPDATE CONCATENANDO O P_CONCIL, MAS NÃO ESTÁ FUNCIONANDO. ELSE UPDATE TB_EDIEXT_PERFIL SET CONCIL = (SELECT CONCIL FROM TB_EDIEXT_PERFIL WHERE COD_MATRIZ = P_COD_MATRIZ)||','||P_CONCIL WHERE COD_MATRIZ = P_COD_MATRIZ AND ROWNUM = 1; END IF; EXCEPTION WHEN CONTEM_EC THEN DBMS_OUTPUT.PUT_LINE('NÃO É PERMITIDO VINCULAR '||V_EC); WHEN CONTEM_REG THEN DBMS_OUTPUT.PUT_LINE('ERRO! A matriz ja possui vinculo com a conciliadora.'); CLOSE VERIFICA_EC; CLOSE VERIFICA_CONCIL; END; / O que está ocorrendo é o seguinte, ele está substituindo o campo CONCIL sempre com o parâmetro de entrada P_CONCIL e a concatenação não está funcionando. Alguém sabe o porque? Obrigado desde já!
  25. CREATE TABLE mensagem ( codmensagem INTEGER PRIMARY KEY, conteudo VARCHAR, codusuorigem INTEGER, codusudestino INTEGER, status INTEGER, CONSTRAINT codusuorigem_fk FOREIGN KEY(codusuorigem) REFERENCES amigos(codusua), CONSTRAINT codusudestino_fk FOREIGN KEY(codusudestino) REFERENCES amigos(codusub) ); Relatório de erros - ORA-00906: parêntese esquerdo não encontrado 00906. 00000 - "missing left parenthesis"
×

Important Information

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