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

(Resolvido) Problema no tratamento dos dados na procedure


Jr Aprediz

Pergunta

Boa noite, pessoal sou novo por aqui, estou aprendendo SQL e estou fazendo uma procedure para carregar uma tabela temporária porém preciso tratar alguns dados antes, por exemplo o o dado na tabela original para o campo sexo está com 'F' e preciso converter na tabela temporária para 'Feminino' e depois jogarei numa tabela que existe no meu BD com os dados já tratados, porém está retornando mais de uma linha, peço um help, sou novo na área:

USE [sYSCLINICAS_DW]

GO

/****** Object: StoredProcedure [dbo].[sp_carregaPaciente] Script Date: 05/12/2011 17:12:35 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[sp_carregaPaciente]

AS

BEGIN

--TESTA SE HÁ TABELA TEMPORÁRIA E CRIA SE NÃO HOUVER

if ( select OBJECT_ID('tempdb..#tmp_comando')) > 0

drop table #tmp_comando

create table #tmp_comando(

id_paciente char(10),

desc_sexo char(10),

faixa_etaria datetime)

--INSERE NA TABELA TEMPORÁRIA OS DADOS DA TABELA DO BANCO SYS_CLINICAS.PACIENTE

INSERT INTO #tmp_comando select Codigo_Paciente, Sexo,Data_Nascimento FROM [sYS_CLINICAS].[dbo].[Paciente]

where [sys_clinicas].[dbo].[Paciente].Codigo_Paciente <>0

-- ESTA PARTE QUE ESTA RETORNANDO MAIS DE UMA LINHA, DEVERIA APENAS ATUALIZAR O CAMPO QUE DESEJO

/*if (select DATALENGTH(desc_sexo) from #tmp_comando) = 'F'

begin

update #tmp_comando

set desc_sexo = 'Feminino'

end

else

begin

update #tmp_comando

set desc_sexo = 'Masculino'

end */

--AQUI É SOMENTE PARA PUDER TESTAR O RETORNO APÓS A EXECUÇÃO DA PROCEDURE

select * from #tmp_comando

END

:wacko:

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Jr,

você pode fazer um CASE na hora de inserir na tabela temporária, ao invés de update.

Ficaria assim:

INSERT INTO #tmp_comando 
select Codigo_Paciente, 
case Sexo WHEN 'F' THEN 'Feminino'
WHEN 'M' THEN 'Masculino' end,
Data_Nascimento FROM [SYS_CLINICAS].[dbo].[Paciente]
where [sys_clinicas].[dbo].[Paciente].Codigo_Paciente <>0

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

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