Usuário com melhor resposta
Ajuda com chamada de procedure em Query.

Pergunta
-
Boa tarde
Galera!
Estou criando uma Consulta SQL e preciso que a mesma traga uma coluna chamada Prazo de entrega, essa coluna é baseada na coluna DataSaida e PrevEntrega em dias uteis, exemplo:
DataSaida PrevEntrega Prazo Entrega
25/10/2013 06/11/2013 = 8
Já possuo um procedure que calcula os dias uteis porém não estou conseguindo fazer a chamada da mesma junto com a consulta, se puderem ajudar agradeço.
Ex:
Query
Select
E.EntNome As Cliente,
ENTIDADE.EntNome As Transportadora,
C.CidNome As Cidade,
C.UfSigla As UF,
NF.NFNum,
NF.NFValTotNota AsTotalNF,
Entidade.EntCod,
CONVERT(VARCHAR, NF.NFDataSaidaEntrada, 103) As DataSaida,
CONVERT(VARCHAR, PV.PedVendaDataEntrega, 103)As PrevEntrega,
CONVERT(VARCHAR, NF.USERDataEntMercCli, 103) As DataEntrega---- #Preciso incluir a quantidade de dias uteis aqui #----
From
ENTIDADE E With(NoLock) ,
CIDADE C With(NoLock),
NOTA_FISCAL NF With(NoLock),
ENTIDADE With(NoLock),
ENT_FONE EF With(NoLock),
NAT_OPERACAO N (NoLock),
Ped_Venda PV (NoLock),
PED_VENDA_NOTA_FISCAL PNF (NoLock)
Where
E.CidCod = C.CidCod
and NF.NfCancelada = 'Não'
and NF.USERDataEntMercCli is not null
and E.EntCod = NF.EntCod
and E.CidCod = C.CidCod
And ENTIDADE.Entnat = 'Transportador'
And NF.NFTranspEntCod = ENTIDADE.EntCod
and ENTIDADE.EntCod = EF.EntCod
And EF.EntFonePrinc = 'Sim'
And (N.NatOpEntraRelVenda = 'Sim' Or (NF.NFNatOpProd In('5.910', '6.910')))
And NF.NFNatOpProd = N.NatOpCodEstr
And CONVERT(DATETIME, SUBSTRING(CONVERT(VARCHAR, NF.NfDataEmis, 120), 1, 10)) BETWEEN '20131101' AND '20131111'
And PV.PedVendaNum = PNF.PedVendaNum
AND PNF.NFNum = NF.NFNum
AND PNF.EmpCod = NF.EmpCod
AND PNF.CtrlDFSerie = NF.CtrlDFSerie
AND PNF.CtrlDFModForm = NF.CtrlDFModForm
And NF.NFNum NOT in (Select CD.CtrlMovDevDocNumOrig
From CTRL_MOV_DEVOLUCAO CD, NOTA_FISCAL NF WITH(NOLOCK)
WHERE NF.NFNum = CD.CtrlMovDevDocNumOrig
And NF.CtrlDFModForm = CD.CtrlMovDevDocEspecOrig
And NF.CtrlDFSerie = CD.CtrlMovDevDocSerieOrig
And NF.NFNum = NF.NFNum
And CD.CtrlMovDevDocSerie <> '1')
Order by
NF.NFTranspEntCod, ENTIDADE.EntCod, NF.NfDataEmis, NF.NfNumEx: Procedure
USE [Apolo_Sim]
GO
/****** Object: StoredProcedure [dbo].[USER_DIAS_UTEIS] Script Date: 11/11/2013 14:25:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[USER_DIAS_UTEIS](@DATAINIC DATETIME, @DATAFIM DATETIME, @SABADO VARCHAR(5),
@DOMINGO VARCHAR(5), @VFERIADO VARCHAR(5))
as
BEGIN
DECLARE
@DATA DATETIME,
@DIASEMANA INTEGER,
@QTDA INTEGER,
@QTDDIAS NUMERIC(24,4)
SELECT @DATA = @DATAINIC + 1
SELECT @QTDDIAS = 0
WHILE @DATA <= @DATAFIM
BEGIN
SELECT @QTDDIAS = @QTDDIAS + 1
SELECT @DIASEMANA= DATEpart(dw, @DATA)
IF (@SABADO = 'Sim' and @DIASEMANA = 7)
begin
select @QTDDIAS = @QTDDIAS - 1
end
IF (@DOMINGO = 'Sim' and @DIASEMANA = 1)
begin
select @QTDDIAS = @QTDDIAS - 1
end
IF (@VFERIADO = 'Sim')
begin
SELECT @QTDA = 0
SELECT @QTDA = COUNT(1) FROM FERIADO with (nolock) WHERE FERDATA = @DATA
IF (@QTDA > 0)
begin
select @QTDDIAS = @QTDDIAS - 1
end
end
SELECT @DATA = @DATA + 1
END
Select @QTDDIAS As QtdDias
END
Obrigado
Leandro Massena.
- Editado Leandro Massena Moraes segunda-feira, 11 de novembro de 2013 17:08
Respostas
-
Deleted
- Marcado como Resposta Giovani Cr quarta-feira, 20 de novembro de 2013 13:55
-
Deleted
- Marcado como Resposta Giovani Cr quarta-feira, 20 de novembro de 2013 13:55
-
Deleted
- Marcado como Resposta Giovani Cr quarta-feira, 20 de novembro de 2013 13:55
-
Deleted
- Marcado como Resposta Giovani Cr quarta-feira, 20 de novembro de 2013 13:55
Todas as Respostas
-
Deleted
- Marcado como Resposta Giovani Cr quarta-feira, 20 de novembro de 2013 13:55
-
-
Deleted
- Marcado como Resposta Giovani Cr quarta-feira, 20 de novembro de 2013 13:55
-
José, Boa tarde!
Acho que estou fazendo a sintaxe errada, recebo a mensagem de erro
Mensagem 444, Nível 16, Estado 3, Procedimento DiasUteis, Linha 50
Select statements included within a function cannot return data to a client. CREATE FUNCTION DiasUteis_TESTE
(@DataInic datetime, @DataFim datetime, @Sabado varchar(5), @Domingo varchar(5), @VFeriado varchar(5))
returns int with SCHEMABINDING as
begin
DECLARE
@DATA DATETIME,
@DIASEMANA INTEGER,
@QTDA INTEGER,
@QTDDIAS NUMERIC(24,4)
SELECT @DATA = @DATAINIC + 1
SELECT @QTDDIAS = 0
WHILE @DATA <= @DATAFIM
BEGIN
SELECT @QTDDIAS = @QTDDIAS + 1
SELECT @DIASEMANA= DATEpart(dw, @DATA)
IF (@SABADO = 'Sim' and @DIASEMANA = 7)
begin
select @QTDDIAS = @QTDDIAS - 1
end
IF (@DOMINGO = 'Sim' and @DIASEMANA = 1)
begin
select @QTDDIAS = @QTDDIAS - 1
end
IF (@VFERIADO = 'Sim')
begin
SELECT @QTDA = 0
SELECT @QTDA = COUNT(1) FROM FERIADO with (nolock) WHERE FERDATA = @DATA
IF (@QTDA > 0)
begin
select @QTDDIAS = @QTDDIAS - 1
end
end
SELECT @DATA = @DATA + 1
END
Select @QTDDIAS As QtdDias
return @QtdDias
end; -
Deleted
- Marcado como Resposta Giovani Cr quarta-feira, 20 de novembro de 2013 13:55
-
Deleted
- Marcado como Resposta Giovani Cr quarta-feira, 20 de novembro de 2013 13:55
-