Ir para conteúdo
Entre para seguir isso  
Fagner

CALL procedure (....

Recommended Posts

Boa tarde,

Estou literalmetne levando um banho aqui, preciso enviar 3 parametros para uma procedure e retornar 2, estou fazendo da seguinte forma:

             $exec = $Conn->prepare("SET @p_total := ?");
             $exec->bind_param('i',$total);
             $exec->execute();

             $exec = $Conn->prepare("SET @p_vlrvenda := ?");
             $exec->bind_param('d',$vlrvenda);
             $exec->execute();
            
             $exec = $Conn->query("CALL addSacola($codcliente,$codproduto,$codconsultora)");
             $exec = $Conn->query("SELECT @p_total,@p_vlrvenda");
             $row  = $exec->fetch_row();

O problema é o retorno que está vindo NULL ja conferi a procedure e o select está retornando o valor correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

  • Conteúdo Similar

    • Por Marcos_imasters
      Boa tarde pessoal, primeiro queria deseja cada um de vocês um feliz natal e prospero ano novo.
       
      tou com um problema com busca de categorias
       
      exemplo da query que estou tentado usar  SELECT * FROM produtos WHERE categoria IN(1) ORDER BY nome ASC
      no campo produtos tenho a coluna categoria e ela ta salva assim com os ids da categorias "1,5,18,22,75' so que quando uso essa query ele so ler como se fosse somente o primeiro id
       
      exemplo ele so busca as categorias que temnha com  o começo 1 queria fazer que buscasse caso estivesse assim "5,8,1,19,22"
       
      alguem tem uma solução?
    • Por Andinho Luiz
      Boa tarde a todos,
       
      Estou tentando criar uma Procedure no MySQL e tenho esta tabela "Cliente". 
       
      CREATE TABLE IF NOT EXISTS cliente ( id_cliente INT(5) AUTO_INCREMENT PRIMARY KEY, tipo CHAR(1) NOT NULL, rSocialNome VARCHAR(20) NOT NULL, cnpjCPF VARCHAR(30) NOT NULL, ieRG VARCHAR(30), contato VARCHAR(50), email VARCHAR(30), site VARCHAR(30), dataCadastro DATE, usuario VARCHAR(30) )ENGINE=MyISAM; Tenho outra tabela que é a "Endereço"
      CREATE TABLE IF NOT EXISTS `endereco` ( `id_endereco` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `id_cliente` INT(11) NOT NULL, `logradouro` VARCHAR(20) NOT NULL , `rua` VARCHAR(25) NOT NULL , `numero` INT(11) NOT NULL , `complemento` VARCHAR(40) , `bairro` VARCHAR(40) NOT NULL , `cidade` VARCHAR(40) NOT NULL , `estado` VARCHAR(40) NOT NULL , `cep` VARCHAR(9) NOT NULL , PRIMARY KEY (`id_endereco`), constraint fk_endereco_cliente FOREIGN KEY (id_cliente) REFERENCES cliente (id_cliente) ) ENGINE=MyISAM  
      Para fazer o insert nas duas tabelas eu criei uma procedure, podem quando tento adicionar o MySQL da erro "ALERTA: Erro ao inserir na tabela de pessoas"
       
      DELIMITER $$ CREATE DEFINER=`dotinfoc`@`localhost` PROCEDURE `cad_cliente`( IN c_tipo CHAR(1), IN c_rSocialNome VARCHAR(20), IN c_cnpjCPF VARCHAR(30), IN c_ieRG VARCHAR(30), IN c_contato VARCHAR(50), IN c_email VARCHAR(30), IN c_site VARCHAR(30), IN c_logradouro VARCHAR(20), IN c_rua VARCHAR(25), IN c_numero INT(11) , IN c_complemento VARCHAR(40) , IN c_bairro VARCHAR(40), IN c_cidade VARCHAR(40), IN c_estado VARCHAR(40), IN c_cep VARCHAR(9) ) BEGIN DECLARE msg VARCHAR(1000) DEFAULT "sem mensagem"; DECLARE excecao SMALLINT DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET excecao = 1; START TRANSACTION; INSERT INTO cliente (tipo, rSocialNome, cnpjCPF, ieRG, contato, email, site, dataCadastro, usuario) VALUES (c_tipo, c_rSocialNome, c_cnpjCPF, c_ieRG, c_contato, c_email, c_site); IF excecao = 1 THEN SET msg = "ALERTA: Erro ao inserir na tabela de pessoas"; ROLLBACK; ELSE SELECT DISTINCT LAST_INSERT_ID() INTO @id_cliente FROM cliente; IF excecao = 1 THEN SET msg = "ALERTA: Erro ao buscar o ultimo ID inserido em clientes"; ROLLBACK; ELSE INSERT INTO endereco(id_cliente, logradouro, rua, numero, complemento, bairro, cidade, estado, cep) values(@id_cliente, c_logradouro, c_rua, c_numero, c_complemento, c_bairro, c_cidade, c_estado, c_cep); IF excecao = 1 THEN SET msg = "ALERTA: Erro ao inserir na tabela de Endereco"; ROLLBACK; END IF; END IF; END IF; IF excecao <> 1 THEN COMMIT; SET msg = "ALERTA: Registro Incluido com sucesso"; END IF; SELECT msg AS msg; END$$ DELIMITER ;  
       
    • Por josePeixoto
      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!
    • Por Ederson Silva
      Olá.
       
      Estou tendo problemas com uma procedure na qual dentro dela existe uma função que busca informações de um XML. Quando executo esta função dentro do Studio Management ele funciona, só que se executo no reporting service ou diretamente no ERP o SQL Server retorna o erro abaixo:
       
      Falha em SELECT porque as seguintes opções SET têm configurações incorretas:
      'ARITHBORT'. Verifique se as opções SET estão corretas para uso com exibições indexadas e/ou índices em colunas computadas e/ou índices filtrados e/ou notificações de consulta e/ou métodos de tipo de XML e/ou operações de índice espacial.
       
      Tanto na procedure quanto nas functions eu setei as seguintes options:
       
      SET ANSI_NULLS ON
      SET ANSI_PADDING ON
      SET ANSI_WARNINGS ON
      SET ARITHABORT ON
      SET CONCAT_NULL_YIELDS_NULL ON
      SET NUMERIC_ROUNDABORT OFF
      SET QUOTED_IDENTIFIER ON
       
      Se alguém tiver alguma ideia de como corrigir isso por gentileza me dê uma luz.
       
      Obrigado!
    • Por bruno.291193
      Olá,
       
      Estou com a seguinte dúvida:
       
      Na criação de minha procedure, os parâmetros de Data Inicial e Final não podem vir nulos. Eu criei a verificação abaixo para isso:
      " IF @DT_INICIAL AND @DT_FINAL IS NULL BEGIN RAISERROR('ERRO = DATA INICIAL E FINAL NAO INFORMADAS.',1,1) END; "
      Porém, ao meu ver, é uma verificação desnecessária, ou seja, se eu criar os parâmetros @DT_INICIAL e @DT_FINAL como NOT NULL, o próprio SQL irá retornar o erro dizendo que o parâmetro é obrigatório.
       
      Mas, não sei como realizar a criação desses parâmetros como NOT NULL, ao realizar o código abaixo, o SQL retorna o erro (também abaixo):
      (
      DECLARE @DT_INICIAL DATE NOT NULL,
      DECLARE @DT_FINAL DATE NOT NULL
      )
      Retorno do SQL:
      Msg 11555, Level 15, State 1, Procedure PRC_MTCORP_MODU_ABAS_BOBI_QUAL_CONS, Line 29
      O parâmetro '@DATA_INICIAL' foi declarado como NOT NULL. Os parâmetros NOT NULL têm suporte apenas com procedimentos armazenados compilados de forma nativa.
       
      Pergunta:
      Existe meios de se criar o parâmetro como NOT NULL?
       
      Detalhe:
      Criando o parâmetro sem nenhuma informação, ou seja, DECLARE "@DT_INICIAL DATE", na execução o SQL aceita o parâmetro como NULL, sendo necessária minha verificação inicial.
       
      Abraço.
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.