Ir para conteúdo

POWERED BY:

Arquivado

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

GuilhermeCAIXA

STORED PROCEDURE - Parâmetros

Recommended Posts

Pessoal,

 

Estou com um problema numa procedure que estou criando. Passo o nome da coluna como parâmetro e dá o seguinte erro

 

Server: Msg 8114, Level 16, State 5, Procedure VGR_MEDALHAS, Line 28

Error converting data type varchar to float.

 

 

//////////////////////////////////////////////////////////////

O CÓDIGO ESTÁ ABAIXO

//////////////////////////////////////////////////////////////

 

 

ALTER PROCEDURE VGR_MEDALHAS(

@CGC AS INT,

@PRODUTO AS VARCHAR(1000),

@DATA AS SMALLDATETIME

 

)

AS

BEGIN

 

DECLARE

@MEDALHA AS VARCHAR(100),

@SQL AS VARCHAR(1000),

@CGCSUAT AS INT,

@CGCCAIXA AS INT,

@VALORSR AS FLOAT,

@VALORSUAT AS FLOAT,

@VALORCAIXA AS FLOAT

 

/*BUSCA CGC DA SUAT*/

SET @CGCSUAT =(

SELECT [CODAREA]

FROM TBL_UNIDADES

WHERE

(CGC IS NULL OR CGC=@CGC)

)

 

/*BUSCA VALOR DO VIDA NA SR*/

SET @VALORSR=(

SELECT @PRODUTO

FROM TBL_HISTORICOVGR

WHERE

(CGC IS NULL OR CGC=@CGC) AND

(DATA IS NULL OR DATA=@DATA)

)

 

SET @VALORSUAT=(

SELECT @PRODUTO

FROM TBL_HISTORICOVGR

WHERE

(CGC IS NULL OR CGC=@CGCSUAT) AND

(DATA IS NULL OR DATA=@DATA)

)

 

SET @CGCCAIXA = '5800'

SET @VALORCAIXA=(

SELECT @PRODUTO

FROM TBL_HISTORICOVGR

WHERE

(CGC IS NULL OR CGC=@CGCCAIXA) AND

(DATA IS NULL OR DATA=@DATA)

)

 

/* gera a medalha */

IF

@VALORSR > @VALORCAIXA AND @VALORSR < @VALORSUAT AND @VALORSR > 0 AND @VALORSR < 1 OR

@VALORSR < @VALORCAIXA AND @VALORSR > @VALORSUAT AND @VALORSR > 0 AND @VALORSR < 1

BEGIN

SET @MEDALHA = 'BRONZE'

END

 

IF

@VALORSR > @VALORCAIXA AND @VALORSR > @VALORSUAT AND @VALORSR >= 0

BEGIN

SET @MEDALHA = 'PRATA'

END

 

IF

@VALORSR >= 1

BEGIN

SET @MEDALHA = 'OURO'

END

 

PRINT 'MEDALHA : ' + @MEDALHA

PRINT @VALORSR

PRINT @VALORSUAT

PRINT @VALORCAIXA

 

END

Compartilhar este post


Link para o post
Compartilhar em outros sites

a sua SP recebe

@CGC AS INT

@PRODUTO AS VARCHAR(1000)

@DATA AS SMALLDATETIME

 

 

e as variáveis VALOR* são todas float.

 

você está tentando armazenar o retorno da query : SELECT @PRODUTO FROM TBL_HISTORICOVGR, (que é varchar), dentro das variáveis @VALORSR, @VALORSUAT, @VALORCAIXA (que são float).

 

 

se o retorno da sua query é um caracter numérico(0,1,2,3...n), converta de caracter para número. Como sua variável é float, segue: convert(float, @VARIÁVEL [, estilo] ) . Não poderá converter caso o retorno da query seja : "fiat uno"( palavra(s) ).

 

onde "estilo" é opcional.

 

cast tambem funciona -> cast(@VARIAVEL as float)

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.