Joel Jacobson
Joel Jacobson

Reputation: 145

Insufficient Number of arguments were supplied for Procedure

Quick help I have a Procedure that doesn't let me build in SQL Server: keep saying An insufficient number of arguments were supplied for the procedure or function dbo.GETNEXTBUSINESSDAY. from line 12 to line 15 is where find that error.

My Procedure is 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;
...

My Function for 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

Thank You.

Upvotes: 0

Views: 8489

Answers (1)

Alchemistmatt
Alchemistmatt

Reputation: 413

Function GETNEXTBUSINESSDAY has two parameters, @dDate Datetime and @nDaysAfter Float

When calling it, provide both parameters, for example dbo.GETNEXTBUSINESSDAY(convert(Datetime,Cast(@nYear as varchar(4)) +'/05/31'), 0);

Upvotes: 1

Related Questions