Jump to content
josePeixoto

Erro(56,16): PLS-00306: wrong number or types of arguments in call to '||'

Recommended Posts

Olá,

 

quando tento executar a trigger abaixo, ele me retorna 

  • Erro(56,16): PLS-00306: wrong number or types of arguments in call to '||'

 

create or replace TRIGGER API_SIM_PF_ATUALIZA_DENTALIS
BEFORE INSERT OR UPDATE ON PESSOA_FISICA 

FOR EACH ROW
DECLARE

type t_num is table of number;
DS_EMAIL_W t_num;
TELEFONE_RES_W t_num;
TELEFONE_COM_W  t_num;
ESTADO_CIVIL_W VARCHAR2(255);
ENDERECO_RES_W t_num;
NUMERO_W t_num;
BAIRRO_RES_W t_num;
COMPLEMENTO_RES_W t_num;
CIDADE_RES_W t_num;
CEP_RES_W t_num;
ENDERECO_COM_W t_num;
NUMERO_COM_W t_num;
BAIRRO_COM_W t_num;
COMPLEMENTO_COM_W t_num;
CIDADE_COM_W t_num;
CEP_COM_W t_num;
PROFISSIONAL_W VARCHAR2(255);
SEXO_W  VARCHAR2(255);
DT_NASCIMENTO_W t_num;

    BEGIN

        SELECT DISTINCT CP.DS_EMAIL,
               ('('||nr_ddd_telefone||')'||nr_telefone),
               ('('||nr_ddd_telefone||')'||nr_telefone),
               (SELECT CP1.DS_ENDERECO FROM COMPL_PESSOA_FISICA CP1 WHERE CP1.CD_PESSOA_FISICA = :NEW.CD_PESSOA_FISICA AND CP1.IE_TIPO_COMPLEMENTO = 1),
               (SELECT CP1.NR_ENDERECO FROM COMPL_PESSOA_FISICA CP1 WHERE CP1.CD_PESSOA_FISICA = :NEW.CD_PESSOA_FISICA AND CP1.IE_TIPO_COMPLEMENTO = 1),
               (SELECT CP1.DS_BAIRRO FROM COMPL_PESSOA_FISICA CP1 WHERE CP1.CD_PESSOA_FISICA = :NEW.CD_PESSOA_FISICA AND CP1.IE_TIPO_COMPLEMENTO = 1),
               (SELECT CP1.DS_COMPLEMENTO FROM COMPL_PESSOA_FISICA CP1 WHERE CP1.CD_PESSOA_FISICA = :NEW.CD_PESSOA_FISICA AND CP1.IE_TIPO_COMPLEMENTO = 1),
               (SELECT CP1.DS_MUNICIPIO FROM COMPL_PESSOA_FISICA CP1 WHERE CP1.CD_PESSOA_FISICA = :NEW.CD_PESSOA_FISICA AND CP1.IE_TIPO_COMPLEMENTO = 1),
               (SELECT CP1.CD_CEP FROM COMPL_PESSOA_FISICA CP1 WHERE CP1.CD_PESSOA_FISICA = :NEW.CD_PESSOA_FISICA AND CP1.IE_TIPO_COMPLEMENTO = 1),
               TO_CHAR(:NEW.DT_NASCIMENTO,'"YYYY-MM-DD HH24:MI:SS')
           BULK COLLECT INTO DS_EMAIL_W,TELEFONE_RES_W,TELEFONE_COM_W,ENDERECO_RES_W,NUMERO_W,BAIRRO_RES_W,COMPLEMENTO_RES_W,CIDADE_RES_W,CEP_RES_W,/*ENDERECO_COM_W,NUMERO_COM_W,BAIRRO_COM_W,COMPLEMENTO_COM_W,
                             CIDADE_COM_W,CEP_COM_W,*/DT_NASCIMENTO_W
        FROM TASY.COMPL_PESSOA_FISICA CP
        WHERE CP.CD_PESSOA_FISICA =:NEW.CD_PESSOA_FISICA
		  AND CP.IE_TIPO_COMPLEMENTO = 1;

       SELECT V.DS_VALOR_DOMINIO INTO ESTADO_CIVIL_W FROM VALOR_DOMINIO V WHERE CD_DOMINIO = 5 AND V.VL_DOMINIO = :NEW.IE_ESTADO_CIVIL;
       SELECT CA.DS_CARGO INTO PROFISSIONAL_W FROM CARGO CA WHERE CA.CD_CARGO = :NEW.CD_CARGO;
       SELECT V.DS_VALOR_DOMINIO INTO SEXO_W FROM VALOR_DOMINIO V WHERE CD_DOMINIO = 4 AND V.VL_DOMINIO = :NEW.IE_SEXO;



        BEGIN
             SEND_DB_REQUST_PROC

            ('http://628186fc.ngrok.io/DentalisIntegration-1.0.0/dentalis/createuser',
               '{ "nome":' || :NEW.NM_PESSOA_FISICA ||','||
                  '"codigo_externo":' || :NEW.CD_PESSOA_FISICA ||','||
                  '"codigo_plano":' || 694 ||','||
                  '"matricula":' || :NEW.CD_PESSOA_FISICA || ',' ||
                  '"cpf":' || :NEW.NR_CPF ||','|| 
                  '"rg":' || :NEW.NR_IDENTIDADE || ',' ||
                  '"email":' || DS_EMAIL_W || ',' ||
                  '"telefone_res":' || TELEFONE_RES_W ||','||
                  '"telefone_com":' || TELEFONE_COM_W || ',' ||
                  '"celular":' || :NEW.NR_TELEFONE_CELULAR || ',' ||
                  '"observacao":' || :NEW.DS_OBSERVACAO || ',' ||
                  '"estado_civil":' || ESTADO_CIVIL_W || ',' ||
                  '"profissao":' || PROFISSIONAL_W || ',' ||
                  '"sexo":'  || SEXO_W || ',' ||
                  '"data_nascimento":' || DT_NASCIMENTO_W || ',' ||
                  '"endereco_res":' || ENDERECO_RES_W || ',' ||
                  '"numero_res":' || NUMERO_W || ',' ||
                  '"bairro_res":' || BAIRRO_RES_W || ',' ||
                  '"complemento_res":' || COMPLEMENTO_RES_W || ',' ||
                  '"cidade_res":' || CIDADE_RES_W || ',' ||
                  '"cep_res":' || CEP_RES_W || ',' ||
                  '"endereco_com": "",' ||
                  '"numero_com":"",' ||
                  '"bairro_com":"",' || 
                  '"complemento_com":"",' ||
                  '"cidade_com":"",' ||
                  '"cep_com":""' ||
                  '}');

             exception 
              when others then
               raise_application_error(-20000,'Erro: '|| sqlerrm);
       END;
    END;

 

Alguém sabe o que pode ser? 

 

Obrigado desde já pela atenção!

Share this post


Link to post
Share on other sites

Quais os parãmetros 

SEND_DB_REQUST_PROC

espera ?!

 

A ideia é montar o sql de forma dinâmica ?

Para que estes 

||','||

?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Dinho Nunes LC
      <div align="center" id="subtitulo"> Canais Abertos </div> <div class="ui cards"> <div class="card"> <div class="content"> <a href="globo.html" style="display: block; color: black"> <div align="center"> <div> <img class="ui tiny image" id="imagem_card_casa" src="assets/images/Rede_Globo_2014.png"> <div align="center" id = "nome_time_fora"> <b>Globo RJ</b> </div> </div> Onde "globo.html" seria substituído pelo link que esta em uma tabela do banco de dados.
       
      Já fiz a conexão. E tenho a base de dados pronta.
       
      Motivo pelo qual estou buscando ajuda:
       
      Faço manualmente a mudança de cada link (são mais de 300) diariamente para evitar copias de terceiros. Sendo assim poderia usar um CRUD para facilitar a troca dos links direto no banco de dados.
    • By jeanzinsousa
      Salve, Galera estou com uma dúvida estudando banco de dados e programação.
       
      escrevi a seguinte query:
       
      SELECT data_pg as diaria, SUM(valor_pg) as valor_diario, SUM(valor_despesa) as valor_despesa, (SELECT SUM(valor_pg) as dinheiro FROM pagamento WHERE tipo = 5 AND MONTH(data_pg) = 06 AND YEAR(data_pg) = 2019) as total_dinheiro, (SELECTSUM(valor_pg) as debito FROM pagamento WHERE tipo = 25 AND MONTH(data_pg) = 06 AND YEAR(data_pg) = 2019) as total_debito, (SELECT SUM(valor_pg) as credito FROM pagamento WHERE tipo = 15 AND MONTH(data_pg) = 06 AND YEAR(data_pg) = 2019) astotal_credito FROM pagamento WHERE MONTH(data_pg) = 06 AND YEAR(data_pg) = 2019 GROUP BY diaria ORDER BY `diaria`
       
      resultado:
      diaria  1 valor_diario valor_despesa total_dinheiro total_debito total_credito   2019-06-10 818.70 0 288.40 586.95 113.30 2019-06-11 169.95 0 288.40 586.95 113.30
       
       
       
       
      Como podem ver meu objetivo e separar por dia o resultado dos valores divididos por tipo de pagamento.
      porém o mesmo mostra a soma total nas subquery.
      quando coloco o group by order by dentro das subquerys apresenta a seguinte mensagem de erro: #1242 - Subquery returns more than 1 row 
       
       
      como resolver?
    • By JorgeeHenrique
      Bom dia, sou iniciante em Delphi, estou fazendo um Cadastro de Clientes, gostaria de usar três Edit´s para filtrar alguns  dados porem com o código abaixo consegui fazer apenas com 1 edit.text, como faço pra usar três e que se algum estiver em branco ele retorna o valor apenas do Edit.text que foi preenchido?
       
      Exemplo: 
       
      Quero buscar por Nome, Situação e Rota (Cliente a da rota B com situação C) e se algum desses campos estiver vazio ele busca apenas o que foi preenchido. Obrigado pela atenção!
       
      .
      procedure TFrm_Cadastro.Bt_BuscarClick(Sender: TObject); begin with Frm_Cadastro.Tbl_Clientes do begin Close; SQL.Clear; SQL.Add( 'Select * from Tbl_Cad_Clientes'); SQL.Add('where Cli_Nome like :nome'); ParamByName('nome').Value := '%' + txt_buscar_nome.Text + '%'; Open; end; end;  
    • By lemanoel
      Oi, alguem pode me ajudar?
       
      Tenho uma tabela de status por dia, e efetivo um registro só quando ha alterações.. exemplo:
      Dia 01, bom
      Dia 03, médio
      Dia 10, ruim
       
      Como encontrar o status do dia 07, via sql?
      Olhando pro exemplo sei que seria MÉDIO… mas nao tenho a menor ideia de como escrever o código....
    • By Viniciusr9
      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;  
×

Important Information

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