Usuário com melhor resposta
Erro multi-part identifier em function

Pergunta
-
Estou criando essa função, as instruções fora da função funcionam corretamente e até crio a função, porém no momento da execução recebo o erro
SELECT RANGE_DATAS '2012-01-01', '2020-12-01'
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "RANGE_DATAS" could not be bound.CREATE FUNCTION RANGE_DATAS(@DATA_INICIAL DATETIME,@DATA_FINAL DATETIME) RETURNS VARCHAR(MAX) AS BEGIN DECLARE @DATA_TEMP AS DATETIME DECLARE @COUNT AS INT DECLARE @LIMITE AS INT DECLARE @RETORNO AS VARCHAR(MAX) DECLARE @MES AS VARCHAR(2) DECLARE @ANO AS CHAR(4) ------------------------------------------------ -- PARA TESTE ------------------------------------------------ -- DECLARE @DATA_INICIAL AS DATETIME -- DECLARE @DATA_FINAL AS DATETIME -- SET @DATA_INICIAL = '2012-01-01' -- SET @DATA_FINAL = '2014-01-01' ------------------------------------------------ SET @LIMITE = DATEDIFF(MM,@DATA_INICIAL,@DATA_FINAL) + 1 SET @COUNT = 1 SET @RETORNO = '' WHILE (@COUNT <= @LIMITE) BEGIN SET @DATA_TEMP = DATEADD(MONTH, @COUNT-1, @DATA_INICIAL) SET @ANO = DATEPART(YEAR, @DATA_TEMP) SET @MES = DATEPART(MONTH, @DATA_TEMP) SET @RETORNO = @RETORNO + '[' + @MES + '/' + @ANO +']' IF (@COUNT <> @LIMITE ) SET @RETORNO = @RETORNO + ',' SET @COUNT = @COUNT + 1 END RETURN @RETORNO END
Alguém sabem o que pode ser? Já pesquisei bastante e não consegui identificar
Respostas
-
Rodrigo, lembre-se que voce tem que passar o schema quando usa uma função e utilizar entre parenteses, tente assim:
SELECT dbo.RANGE_DATAS ('2012-01-01', '2020-12-01')
Alexandre Matayosi Conde Mauricio.
- Marcado como Resposta Rodrigo_Figueira quinta-feira, 20 de junho de 2013 20:48
Todas as Respostas
-
Rodrigo,
Qual o select que voce esta chamando essa função? poste ele por favor.
Em funções voce deve utilizar o schema tambem dbo.NomeDaFuncao
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Email: fabrizzio.antoniaci@gmail.com- Sugerido como Resposta Junior Galvão - MVPMVP quinta-feira, 20 de junho de 2013 19:25
- Editado Fabrizzio CaputoModerator quinta-feira, 20 de junho de 2013 19:41 Rposta
-
Rodrigo, lembre-se que voce tem que passar o schema quando usa uma função e utilizar entre parenteses, tente assim:
SELECT dbo.RANGE_DATAS ('2012-01-01', '2020-12-01')
Alexandre Matayosi Conde Mauricio.
- Marcado como Resposta Rodrigo_Figueira quinta-feira, 20 de junho de 2013 20:48
-
Rodrigo,
Como você esta criando uma function do tipo In-Line basicamente a forma de execução é através de um simples Select o exemplo do Alexandre é a forma de execução que você precisa.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
-
Obrigado, deu certo! Faltavam os parênteses mesmo.
- Editado Rodrigo_Figueira quinta-feira, 20 de junho de 2013 20:50 Faltou informação