Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Prezados,
Tenho essa função que há uma declaração de variável, ao executar o script a mesma retorna erro, o motivo da criação dessa variável é devido ao critério da mesma, pois na chamada da função posso ou não passar o valor. Minha intenção é utilizar a mesma função e não criar uma outra com este argumento no where.
CREATE FUNCTION [DBO].[CWA_FIN_QUERY_ASSINATURA_TIPO2]
(
@CD_CONTABIL_PESSOA INT,
@NU_CTR INT,
@NU_DV_CTR SMALLINT,
@NU_SERIE_CTR VARCHAR(1),
@NU_RECIBO_VA INT,
@NU_DV SMALLINT
) RETURNS TABLE
AS BEGIN
DECLARE @EXECUTE VARCHAR(4000)
SET @EXECUTE = 'SELECT '
SET @EXECUTE = @EXECUTE + 'PA.NU_PERIODO, '
SET @EXECUTE = @EXECUTE + 'CA.CD_PRODUTO, '
SET @EXECUTE = @EXECUTE + '''0'' AS CD_ITEM_PRODUTO, '
SET @EXECUTE = @EXECUTE + 'ISNULL(CP.NU_CPF,0) AS CPF_CLIENTE, '
SET @EXECUTE = @EXECUTE + 'ISNULL(CP.NU_CNPJ,0) AS CNPJ_CLIENTE, '
SET @EXECUTE = @EXECUTE + 'TP.CD_TP_PAGAMENTO, '
SET @EXECUTE = @EXECUTE + 'RA.VA_RECIBO, '
SET @EXECUTE = @EXECUTE + 'PA.VA_PLANO, '
SET @EXECUTE = @EXECUTE + 'ISNULL(RA.VA_DESCONTO,0) AS VA_DESCONTO, '
SET @EXECUTE = @EXECUTE + 'RA.VA_DIVIDA_AGREG, '
SET @EXECUTE = @EXECUTE + 'RA.DT_EMISSAO, '
SET @EXECUTE = @EXECUTE + 'P.CD_GRUPO_FISCAL, '
SET @EXECUTE = @EXECUTE + 'P.CD_MATERIAL_ASSOCIADO, '
SET @EXECUTE = @EXECUTE + 'RA.CD_LOCAL_PAG, '
SET @EXECUTE = @EXECUTE + 'ISNULL(CP1.NU_CPF,0) AS CPF_PORTADOR, '
SET @EXECUTE = @EXECUTE + 'ISNULL(CP1.NU_CNPJ,0) AS CNPJ_PORTADOR, '
SET @EXECUTE = @EXECUTE + 'RA.NU_PARCELA, '
SET @EXECUTE = @EXECUTE + 'CAST(RA.NU_RECIBO AS VARCHAR) + ''-'' + CAST(RA.NU_DV AS VARCHAR) + ''/'' + CAST(RA.NU_PARCELA AS VARCHAR) AS NU_RECIBO '
SET @EXECUTE = @EXECUTE + 'FROM '
SET @EXECUTE = @EXECUTE + 'CONTRATO_ASSINANTE CA '
SET @EXECUTE = @EXECUTE + 'INNER JOIN PLANO_COMERCIAL PC ON CA.CD_PLANO = PC.CD_PLANO '
SET @EXECUTE = @EXECUTE + 'INNER JOIN FORMA_PAGAMENTO FP ON FP.CD_FORMA_PAG = PC.CD_FORMA_PAG '
SET @EXECUTE = @EXECUTE + 'INNER JOIN TIPO_PAGAMENTO TP ON TP.CD_TP_PAGAMENTO = FP.CD_TP_PAGAMENTO '
SET @EXECUTE = @EXECUTE + 'INNER JOIN CADASTRO_PESSOA CP ON CA.CD_CONTABIL_PESSOA = CP.CD_CONTABIL_PESSOA '
SET @EXECUTE = @EXECUTE + 'INNER JOIN PRODUTO P ON CA.CD_PRODUTO = P.CD_PRODUTO '
SET @EXECUTE = @EXECUTE + 'INNER JOIN PERIODO_ASSINANTE PA ON PA.CD_CONTABIL_PESSOA = CA.CD_CONTABIL_PESSOA AND '
SET @EXECUTE = @EXECUTE + ' PA.NU_PERIODO = CA.NU_PERIODO_ATUAL AND '
SET @EXECUTE = @EXECUTE + ' PA.NU_CTR = CA.NU_CTR AND '
SET @EXECUTE = @EXECUTE + ' PA.NU_DV_CTR = CA.NU_DV_CTR AND '
SET @EXECUTE = @EXECUTE + ' PA.NU_SERIE_CTR = CA.NU_SERIE_CTR '
SET @EXECUTE = @EXECUTE + 'INNER JOIN RECIBO_ASSINANTE RA ON RA.CD_CONTABIL_PESSOA = PA.CD_CONTABIL_PESSOA AND '
SET @EXECUTE = @EXECUTE + ' RA.NU_PERIODO = PA.NU_PERIODO AND '
SET @EXECUTE = @EXECUTE + ' RA.NU_CTR = PA.NU_CTR AND '
SET @EXECUTE = @EXECUTE + ' RA.NU_DV_CTR = PA.NU_DV_CTR AND '
SET @EXECUTE = @EXECUTE + ' RA.NU_SERIE_CTR = PA.NU_SERIE_CTR AND '
SET @EXECUTE = @EXECUTE + ' RA.NU_RECIBO = PA.NU_RECIBO '
SET @EXECUTE = @EXECUTE + 'INNER JOIN CADASTRO_PESSOA CP1 ON CP1.CD_CONTABIL_PESSOA = RA.CD_LOCAL_PAG '
SET @EXECUTE = @EXECUTE + 'WHERE '
SET @EXECUTE = @EXECUTE + 'CA.CD_CONTABIL_PESSOA = ' + CAST(@CD_CONTABIL_PESSOA AS VARCHAR)
SET @EXECUTE = @EXECUTE + ' AND CA.NU_CTR = ' + CAST(@NU_CTR AS VARCHAR)
SET @EXECUTE = @EXECUTE + ' AND CA.NU_DV_CTR = ' + CAST(@NU_DV_CTR AS VARCHAR)
SET @EXECUTE = @EXECUTE + ' AND CA.NU_SERIE_CTR = ' + @NU_SERIE_CTR
SET @EXECUTE = @EXECUTE + ' AND RA.NU_RECIBO = ' + CAST(@NU_RECIBO_VA AS VARCHAR)
IF ISNULL(@NU_DV,0) <> 0 BEGIN
SET @EXECUTE = @EXECUTE + ' AND RA.NU_DV = ' + CAST(@NU_DV AS VARCHAR)
END
RETURN EXEC (@EXECUTE)
END;Carregando comentários...