none
stored procedure - retornando um select de 2 tabelas RRS feed

  • Pergunta

  • Boa Noite,

    Estou precisando de uma ajuda de vc6, por favor.

    A minha necessidade é de fazer uma pesquisa via 'SP' em duas tabelas no banco em SQL server 2000 e ter um único retorno de ambas.

    Ai vai as tabelas:
    TABELA ESPECIALIDADE
                     [COD_ESP] [int] IDENTITY (1, 1) NOT NULL
                     [DESC_ESP] [varchar] (40)

    TABELA MEDICO
    [CRM] [int] IDENTITY (1, 1) NOT NULL ,
    [NOME] [varchar] (40),
    [RUA] [varchar] (40) ,
    [NUM] [decimal](10,0) NULL ,
    [BAIRRO] [varchar] (25)
    [CPF] [decimal](14, 1) NULL ,
    [SALARIO] [money](8) NULL ,
    [COD_ESP] [int] NULL

    Lá vai, estou querendo fazer uma stored procedure que me retorne os medicos que estão vinculados as especialidades.
    Exemplo:
    Quando eu executar EXEC [NOME SP] PEDIATRIA, ele me retornar os médicos que estão vinculados a está especialidade. Para tudo isso é claro que a especialidade pediatria terá que está cadastrada no banco.



    Obg!!!

    terça-feira, 25 de novembro de 2008 01:24

Respostas

  • Boa Noite Reboucas_DSW,

     

    Seja bem vindo ao fórum MSDN. Nós participantes do fórum tentaremos lhe ajudar da melhor forma possível nos seus problemas e dúvidas com o SQL Server através do nosso conhecimento, experiência e disponibilidade.

     

    Acredito que a stored procedure abaixo o ajude:

     

    CREATE PROCEDURE uspRecuperaMedicosPorEspecialidade
    @DESC_ESP varchar (40)
    AS
    SELECT CRM, NOME, RUA, NUM, BAIRRO, CPF, SALARIO, COD_ESP
    FROM MEDICO
    INNER JOIN ESPECIALIDADE ON MEDICO.COD_ESP = ESPECIALIDADE.COD_ESP

    WHERE DESC_ESP = @DESC_ESP

     

    Em todo caso, normalmente esse tipo de solicitação é feito com base no ID e não no nome da especialidade. Normalmente a aplicação mostra as especialidades através de um combo e após escolher o ID repassa-o ao banco. Se esse for o caso tente algo do tipo:

     

    CREATE PROCEDURE uspRecuperaMedicosPorEspecialidade
    @DESC_ESP varchar (40)
    AS
    SELECT CRM, NOME, RUA, NUM, BAIRRO, CPF, SALARIO, COD_ESP
    FROM MEDICO
    WHERE COD_ESP = @COD_ESP

     

    Pode ser que o nome da especialidade seja parcialmente informado. Nesse caso o uso do LIKE é necessário. Ex:

     

    CREATE PROCEDURE uspRecuperaMedicosPorEspecialidade
    @DESC_ESP varchar (40)
    AS
    SELECT CRM, NOME, RUA, NUM, BAIRRO, CPF, SALARIO, COD_ESP
    FROM MEDICO
    INNER JOIN ESPECIALIDADE ON MEDICO.COD_ESP = ESPECIALIDADE.COD_ESP

    WHERE DESC_ESP LIKE '%' + @DESC_ESP + '%'

     

    [ ]s,

     

    Gustavo

    terça-feira, 25 de novembro de 2008 01:51

Todas as Respostas

  • Boa Noite Reboucas_DSW,

     

    Seja bem vindo ao fórum MSDN. Nós participantes do fórum tentaremos lhe ajudar da melhor forma possível nos seus problemas e dúvidas com o SQL Server através do nosso conhecimento, experiência e disponibilidade.

     

    Acredito que a stored procedure abaixo o ajude:

     

    CREATE PROCEDURE uspRecuperaMedicosPorEspecialidade
    @DESC_ESP varchar (40)
    AS
    SELECT CRM, NOME, RUA, NUM, BAIRRO, CPF, SALARIO, COD_ESP
    FROM MEDICO
    INNER JOIN ESPECIALIDADE ON MEDICO.COD_ESP = ESPECIALIDADE.COD_ESP

    WHERE DESC_ESP = @DESC_ESP

     

    Em todo caso, normalmente esse tipo de solicitação é feito com base no ID e não no nome da especialidade. Normalmente a aplicação mostra as especialidades através de um combo e após escolher o ID repassa-o ao banco. Se esse for o caso tente algo do tipo:

     

    CREATE PROCEDURE uspRecuperaMedicosPorEspecialidade
    @DESC_ESP varchar (40)
    AS
    SELECT CRM, NOME, RUA, NUM, BAIRRO, CPF, SALARIO, COD_ESP
    FROM MEDICO
    WHERE COD_ESP = @COD_ESP

     

    Pode ser que o nome da especialidade seja parcialmente informado. Nesse caso o uso do LIKE é necessário. Ex:

     

    CREATE PROCEDURE uspRecuperaMedicosPorEspecialidade
    @DESC_ESP varchar (40)
    AS
    SELECT CRM, NOME, RUA, NUM, BAIRRO, CPF, SALARIO, COD_ESP
    FROM MEDICO
    INNER JOIN ESPECIALIDADE ON MEDICO.COD_ESP = ESPECIALIDADE.COD_ESP

    WHERE DESC_ESP LIKE '%' + @DESC_ESP + '%'

     

    [ ]s,

     

    Gustavo

    terça-feira, 25 de novembro de 2008 01:51
  • Boa Noite Gustavo,

    A primeira opção que vc postou de cara deu certo, blz mesmo, e a última também. A segunda opção não deu certo para o meu caso, eu também nem a explorei muito bem, pois como eu disse a primeira deu certinho.

    Cara, agradeço pela sua ajuda.

    Vlw!!!!
    terça-feira, 25 de novembro de 2008 02:15
  • Só pra lembrar que da pxm vez usarei os id's.  

    Valeu!!!
    terça-feira, 25 de novembro de 2008 02:25