Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Evandro Fontes

Erro em Stored Prodcedure

Recommended Posts

Olá!

 

 

Já procurei aqui e na net alguns exemplos, os que achei não foram aplicáveis ao meu caso.

 

O problema:

 

Tenho uma procedure que cria uma tabela temporária com os registros, e depois retorna essa tabela.

 

Como parametro, passo os códigos de promotores para a cláusula IN, porém ele dá erro de conversão...

 

um dos agravantes, é que na consulta eu uso variáveis (SELECT DISTINCT @CodInt = [CodPromotor], @qtd = SUM([QtdOperacao])) para serem usadas no insert logo após (INSERT INTO #R_ABORDAGENS ([Cod],['+ CONVERT(varchar,@data_ini,103)+']) VALUES('+CONVERT(varchar,@CodInt,0)+', '+CONVERT(varchar,@qtd,0)+'))..

 

 

Segue minha procedure para análise...

 

 

ALTER PROCEDURE [dbo].[r_abordagem]
@Cod nvarchar(1000),
@data_ini	 datetime,
@data_fim	 datetime,
@quesito	 int 
AS
DECLARE @qtd int, @sql varchar(250), @CodInt int, @select varchar (250), @data datetime, @data_c datetime, @tbl varchar(1000)

CREATE TABLE #R_ABORDAGENS(
	[Cod] [int] NULL
)

SET @tbl = '[P].[NomePromotor] '


WHILE (@data_ini <= @data_fim )
	BEGIN
		SET @sql = 'ALTER TABLE #R_ABORDAGENS ADD [' + CONVERT(varchar,@data_ini,103) +'] [int] NULL'
		EXEC(@sql)	
		SELECT DISTINCT  @CodInt = [CodPromotor], @qtd = SUM([QtdOperacao])
				   FROM on_operacao
				  WHERE CodTipoOperacao IN(1,2)
					AND CodPromotor IN ( 4, 2998, 34595)
					AND YEAR(DtOperacao) = YEAR(@data_ini)
					AND MONTH(DtOperacao) = MONTH(@data_ini)
					AND DAY(DtOperacao) = DAY(@data_ini)
			   GROUP BY CodPromotor, DtOperacao
		SET @sql = 'INSERT INTO #R_ABORDAGENS ([Cod],['+ CONVERT(varchar,@data_ini,103)+']) VALUES('+CONVERT(varchar,@CodInt,0)+', '+CONVERT(varchar,@qtd,0)+')'
		--PRINT(@CodInt)
		--PRINT(@sql)
		SET  @CodInt = NULL
		SET  @qtd = NULL

		EXEC(@sql)
		SET @tbl = @tbl + ' , [A].[' + CONVERT(varchar,@data_ini,103)+'] '
		SET @data_ini	= @data_ini+1
	END
EXEC('SELECT DISTINCT '+ @tbl +' FROM #R_ABORDAGENS A JOIN ON_PROMOTOR P ON P.CodPromotor = A.Cod	')

IF OBJECT_ID(N'tempdb..#R_ABORDAGENS', N'U') IS NOT NULL 
DROP TABLE #R_ABORDAGENS;

 

 

 

---

 

 

Faço a chamada da seguinte forma:

 

EXEC r_abordagem '4, 2998, 34595','2009-11-24', '2009-11-30', 1

 

 

o ultimo parametro ainda não implementei, será um tipo de filtro ... esbarrei nesse problema e não consegui passá-lo.

 

 

 

Desde já, agradeço-lhes a ajuda.

 

 

Abs,

 

Evandro Fontes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como parametro, passo os códigos de promotores para a cláusula IN, porém ele dá erro de conversão

 

Que erro que ele gera? e qual a versao do SQL?

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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