Usuário com melhor resposta
stored procedure - retornando um select de 2 tabelas

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!!!
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_ESPWHERE 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_ESPPode 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_ESPWHERE DESC_ESP LIKE '%' + @DESC_ESP + '%'
[ ]s,
Gustavo
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_ESPWHERE 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_ESPPode 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_ESPWHERE DESC_ESP LIKE '%' + @DESC_ESP + '%'
[ ]s,
Gustavo
-
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!!!! -