快速帮助我有一个不允许我在SQL Server中构建的过程:继续从第12行到第15行说An insufficient number of arguments were supplied for the procedure or function dbo.GETNEXTBUSINESSDAY.
是发现错误的地方。
我的程序是dbo.PAYSESTIMATED:
ALTER PROCEDURE [dbo].[PAYSESTIMATED]
(@nLicNum FLOAT, @nYear FLOAT)
AS
BEGIN
DECLARE @dDueDate DATETIME;
DECLARE @nActualTaxes FLOAT;
DECLARE @nPreviousYearTaxes FLOAT;
DECLARE @nQuarterlyTaxesDue FLOAT;
DECLARE @nNetPremium FLOAT;
DECLARE @sQuarterlyDescription VARCHAR(200) = 'PREMIUM TAX QUARTERLY - SURPLUS LINES BROKERS';
DECLARE @sAnnualDescription VARCHAR(200) = 'PREMIUM TAX ANNUAL - SURPLUS LINES BROKERS';
DECLARE @dFirstQuarterDue DATETIME = dbo.GETNEXTBUSINESSDAY(convert(Datetime,Cast(@nYear as varchar(4)) +'/05/31'));
DECLARE @dSecondQuarterDue DATETIME = dbo.GETNEXTBUSINESSDAY(convert(Datetime,Cast(@nYear as varchar(4)) +'/08/31'));
DECLARE @dThirdQuarterDue DATETIME = dbo.GETNEXTBUSINESSDAY(convert(Datetime,Cast(@nYear as varchar(4)) +'/11/30'));
DECLARE @dAnnualDue DATETIME = dbo.GETNEXTBUSINESSDAY(CONVERT(DATETIME, @nYear+ISNULL(1, '') +'/03/1'));
DECLARE @nPreviousAmount FLOAT;
DECLARE @nPaysEstimated FLOAT;
DECLARE @nPaysQuarterly FLOAT;
DECLARE @dToday DATETIME;
SET NOCOUNT ON;
...
我对Dbo.GETNEXTBUSSINESSDAY的函数:
ALTER FUNCTION [dbo].[GETNEXTBUSINESSDAY]
( @dDate Datetime, @nDaysAfter Float)
RETURNS datetime AS
BEGIN
DECLARE @dNextDay Datetime = @dDate;
If @nDaysAfter is null or @nDaysAfter < 0 or @dDate is null begin
Return null;
End
If @nDaysAfter = 0 begin
while (dbo.ISHOLIDAY(@dNextDay) = 1) or (RTrim(convert(char,@dNextDay + 'DAY')) in ('SATURDAY','SUNDAY')) Begin
SET @dNextDay = @dNextDay + 1;
End;
RETURN @dNextDay;
End
Else BEGIN
SET @dNextDay = @dNextDay + 1;
declare @i int = 1
while @i <= @nDaysAfter
begin
while (dbo.ISHOLIDAY(@dNextDay) = 1) or (RTrim(convert(char,@dNextDay + 'DAY')) in ('SATURDAY','SUNDAY'))
Begin
SET @dNextDay = @dNextDay + 1;
End
SET @dNextDay = @dNextDay + 1;
set @i = @i+1
End
END
RETURN @dNextDay - 1;
END
谢谢。
答案 0 :(得分:1)
功能GETNEXTBUSINESSDAY
有两个参数,@dDate Datetime
和@nDaysAfter Float
调用它时,例如,提供两个参数
dbo.GETNEXTBUSINESSDAY(convert(Datetime,Cast(@nYear as varchar(4)) +'/05/31'), 0);