When you specify a parameter as Nullable, the generated code generates Nullable<type> parameters for the method to call the proc (see the generated code).
You then can pass a normal value OR null.
So I did a small test with nullable datetime parameters. I indeed got the same error:
Unhandled Exception: System.Data.SqlClient.SqlException: Procedure 'Employee Sales by Country' expects parameter '@Beginning_Date', which was not supplied.
Silly, as the code does supply this parameter. I pass 'null' as the value for the parameter, not some nullable structure, as Nullable<DateTime> which you set to null, is null.
(edit). OK!
IF you define a parameter as NULL, the SqlClient of .NET thinks it's an optional parameter. Which is IMHO a choice they shouldn't make, but they have, so you've to live with it. In a way I can understand it, why specify NULL for a parameter to a proc? and also, nullable parameters are used in procs only for OPTIONAL parameters (most cases anyway).
So, if you want to have a nullable parameter, you've to specify a DEFAULT for the parameter in the proc definition.
example: Northwind proc, first the initial version, which will crash with a nullable parameter IN CODE:
ALTER procedure "Employee Sales by Country"
@Beginning_Date DateTime, @Ending_Date DateTime AS
SELECT Employees.Country, Employees.LastName, Employees.FirstName, Orders.ShippedDate, Orders.OrderID, "Order Subtotals".Subtotal AS SaleAmount
FROM Employees INNER JOIN
(Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID)
ON Employees.EmployeeID = Orders.EmployeeID
WHERE Orders.ShippedDate Between @Beginning_Date And @Ending_Date
now the altered one which has optional parameters which does work with nullable parameters defined in llblgen pro:
ALTER procedure "Employee Sales by Country"
@Beginning_Date DateTime = NULL, @Ending_Date DateTime = NULL AS
SELECT Employees.Country, Employees.LastName, Employees.FirstName, Orders.ShippedDate, Orders.OrderID, "Order Subtotals".Subtotal AS SaleAmount
FROM Employees INNER JOIN
(Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID)
ON Employees.EmployeeID = Orders.EmployeeID
WHERE Orders.ShippedDate Between @Beginning_Date And @Ending_Date