为Procedure提供的参数数量不足

时间:2017-03-16 18:21:21

标签: sql sql-server function parameters

快速帮助我有一个不允许我在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

谢谢。

1 个答案:

答案 0 :(得分:1)

功能GETNEXTBUSINESSDAY有两个参数,@dDate Datetime@nDaysAfter Float

调用它时,例如,提供两个参数 dbo.GETNEXTBUSINESSDAY(convert(Datetime,Cast(@nYear as varchar(4)) +'/05/31'), 0);