Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Não estou conseguindo realizar pesquisa na stored procedur


Ricardo Scarpim

Pergunta

Ola pessoal, me Chamo Ricardo Scarpim e estou encontrando dificuldades com esta pesquisa sql que estou fazendo atraves de uma stored procedure, segue a stored procedure :

-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE PROCEDURE `ladylil`.`sp_usu_adm` (IN TIPO SMALLINT,
                                         IN US_CODIGO INT,
                                         IN US_NOME VARCHAR(100),
                                         IN US_EMAIL VARCHAR(250),
                                         IN US_SENHA VARCHAR(50),
                                         IN US_COD_NIVEL VARCHAR(100)
)
BEGIN

    /* Declarando Variaveis.*/
    DECLARE var_cod_nivel  INT;


    /* Pegar o Codigo do Nivel de Usuario. */
    SELECT niv_codigo FROM usu_nivel where (niv_descricao = us_cod_nivel) 
            INTO var_cod_nivel;


    CASE TIPO


        /* ========================================================================================= */
        /*  Procedimento para a Inclusao de Dados.  */
        WHEN 1  THEN
        BEGIN

            /* Pegar a Data Atual. */
            DECLARE var_dtcadastro DATE    DEFAULT CURRENT_DATE;
                    

            INSERT INTO usu_usuarios( usu_dtcadastro, usu_nome, 
                        usu_email, usu_senha, usu_cod_nivel)
            VALUES(var_dtcadastro, us_nome, us_email, us_senha, var_cod_nivel );
        END;


        /* ========================================================================================= */
        /* Procedimento para a Alteracao de Dados.  */
        WHEN 2 THEN
        BEGIN

            /* Pegar a Data Atual*/
            DECLARE var_dtalteracao DATE DEFAULT CURRENT_DATE;

            UPDATE usu_usuarios SET 
                    usu_dtalteracao = var_dtalteracao ,
                    usu_nome         = us_nome,
                    usu_email        = us_email,
                    usu_senha        = us_senha,
                    usu_cod_nivel    = var_cod_nivel
            WHERE (usu_codigo = us_codigo);

        END;

        
        /* ========================================================================================= */
        /* Procedimento para a Delecao de Usuarios.*/
        WHEN 3 THEN
        BEGIN
            /* Procedimento para a Delecao do Usuario. */
            DELETE FROM usu_usuarios WHERE (usu_codigo = us_codigo);
        END;


        /* ========================================================================================= */
        /* Procedimento para o Retorno dos Dados Cadastrais.*/
        WHEN 4 THEN
        BEGIN

            SELECT * FROM usu_usuarios 
                LEFT JOIN usu_nivel ON (niv_codigo = var_cod_nivel)
                WHERE (usu_codigo = us_codigo);        

        END;

    END CASE;
END
Na hora de realizar uma pesquisa por exemplo esta me retornando os campos da tabela de usuarios mais os campos da tabela nivel de usuarios não retorna, vem em branco, assim :
Este e o Chamado da Stored Procedure.
call sp_usu_adm(4,6, 'BRENDA CAMARGO SCARPIM', 'ricardoscarpim@hotmail.com', 'rick1902','');


Este e o Retorno da Mesma.
    6    2013-01-16    2013-01-17    RICARDO LISIAS SCARPIM    ricardoscarpim@hotmail.com    rick1902    1        null          null

Agradeco desde já a atencao e presteza de todos, um abraco.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
...
...
SELECT * FROM usu_usuarios
                LEFT JOIN usu_nivel ON (niv_codigo = var_cod_nivel)
                WHERE (usu_codigo = us_codigo);
...
...
Quando você realiza um join você deve comparar elementos das duas tabelas para que elas possam se corresponder. Você não deve usar elemantos vindos de variáveis. Elementos vindos de variáveis devem ser usados na cláusula WHERE. Segue abaixo um exemplo de como deveria ser a sql acima:
SELECT * 
FROM usu_usuarios u
LEFT JOIN usu_nivel  n ON n.niv_codigo = u.usu_cod_nivel 
WHERE u.usu_codigo = us_codigo AND u.usu_cod_nivel = var_cod_nivel;

Por padrão o motor do MySQL vai ler da esquerda para a direita. Ou seja lerá os valores em usu_usuarios e buscará correspondentes em usu_nivel. Caso não encontre correspondentes em usu_nivel trará NULL para os campos desta tabela.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...