• Thank you for informing us that sp_executesql parameters may be OUTPUT parameters. I didn't find that anywhere in BOL.

    Here is an example:

    USE pubs

    declare @sql nvarchar(3000)

    declare @d datetime

    set @sql = N'

    -- compute the same or next date that is in Sales table.

    SET NOCOUNT ON

    declare @o_date datetime, @p_date datetime

    set @p_date = convert(datetime,convert(varchar(10),@date, 120)) -- chop off hours

    select @o_date = min(ord_date) from Sales where ord_date >= @P_date

    if @@rowcount = 0

    select @o_date = max(ord_date) from Sales where ord_date < @P_date

    if @o_date is not null

    set @next_date = @o_date

    else

    set @next_date = @p_date

    '

    exec dbo.sp_executesql @sql

    , N'@date datetime, @next_date datetime OUT'

    , '1993-05-25', @next_date = @d OUT

    print @d