none
Erro de conversão de varchar e time RRS feed

  • Pergunta

  • Olá a todos, estou desenvolvendo uma procedure e não estou conseguindo, fiz o insert e o select fora da procedure manualmente e estão funcionando, o problema é quando eu quero, que e a procedure me retorne, mas está dando o seguinte erro.

    Mensagem 402, Nível 16, Estado 1, Procedimento Fpesquisa, Linha 52
    Os tipos de dados varchar e time são incompatíveis no operador add.

    Eu sei que tipos de dados as variaveis tem, mas não consigo identificar de quais variáveis está dando o erro, e como resolver.

    Esta é a Script

    USE [DATABASE]
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO

    ALTER PROCEDURE [dbo].[Fpesquisa] 

    @DtIni date,
    @DtFim date,
    @REG bigint,
    @SIS bigint,
    @SS bigint,
    @Interval bigint,
    @URAC int,
    @HrIni time,
    @HrFim time


    AS
    BEGIN
    SET NOCOUNT ON

    DECLARE @Area nvarchar(max)
    DECLARE @Table varchar(max)
    DECLARE @SQL nvarchar(max)


    SET @Table = 'Instrumentos_'
    SET @Area = RTRIM(('U' + RIGHT(('0' + LTRIM(STR( @REG,2))),2) + RIGHT(('0' + LTRIM(STR( @SIS,2))),2) + RIGHT(('0' + LTRIM(STR( @SS,2))),2)  + RIGHT(('0' + LTRIM(STR( @URAC,2))),2)))
    SET @Table = @Table + @Area

    IF OBJECT_ID('tempdb..#Tabpesquisa') IS NOT NULL
    BEGIN
         DROP TABLE #Tabpesquisa
    END
    CREATE TABLE #Tabpesquisa ( -- Criando tabela temporaria
    Data date NULL,
    Valord float NULL,
    --Dia date NULL,
    --Hora time NULL,
    Valorh float,
    Fpesquisa AS (Valord/Valorh*100)
    )

    BEGIN
    SET @SQL ='
    INSERT INTO #Tabpesquisa (Data, Valord, Valorh)
    SELECT CAST (Data_Hora as date) AS Data,
             --CAST (MAX (Data_Hora) as time) AS Hora,
             AVG (CASE WHEN FLAG >= 1 THEN CAST (Valor as float) ELSE null END) AS Valord,
             MIN (CASE WHEN CAST (Data_Hora as time) BETWEEN '''+@HrIni+''' AND '''+@HrFim+''' THEN CAST (Valor as float) else null end) as Valorh
    FROM ' + @Table + '
    WHERE Tag Like ''FIT%'' 
              and FLAG > ''0''
              and CAST (Data_Hora as date) BETWEEN '''+@DtIni+''' AND '''+@DtFim+'''
    GROUP BY CAST (Data_Hora as date)

    SELECT * FROM #Tabpesquisa'
    Exec(@SQL)
    END
    END

    Aqui está uma imagem, eu acredito que o erro esteja entro do @SQL


    quarta-feira, 4 de março de 2020 18:47

Todas as Respostas