通过存储过程将日期值插入或更新为sysdate

时间:2015-01-17 09:02:41

标签: sql sql-server tsql stored-procedures

我有一个程序:

create proc proc_ins_upd_exp
    @id             int = 0,
    @itemname       nvarchar(200),
    @price          decimal,
    @dateofbilling  date
as
begin
    set nocount on;

    if (@id = 0)
       insert into exp_tbl (itemname, price, dateofbilling) 
       values (@itemname, @price, @dateofbilling)
    else
       update exp_tbl
       set itemname = isnull (@itemname, itemname),
           price = isnull (@price, price),
           dateofbilling = isnull (@dateofbilling , dateofbilling)
       where id = @id

   set nocount off;
end;

在表格exp_tbl中,列dateofbilling的数据类型为date

如何通过存储过程将dateofbilling的值作为getdate插入,或者当此值为NULL时使用sysdate更新dateofbilling的值?

当我尝试执行存储过程时,我收到错误。

execute proc_ins_upd_exp 
     @itemname = 'test', @price = 100, @dateofbilling = getdate()

2 个答案:

答案 0 :(得分:0)

您可以将文字值或变量传递给执行... 通常(除少数例外)您不能使用任何形式的复杂表达式或函数调用

Declare @currentDate date = getdate()
execute proc_ins_upd_exp @itemname = 'test', @price = 100, @dateofbilling = @currentDate

答案 1 :(得分:0)

ALTER Procedure proc_ins_upd_exp
    @id             int = 0,
    @itemname       nvarchar(200),
    @price          decimal,
    @dateofbilling  date = null
AS
IF @dateofbilling is null
SET @dateofbilling = getdate()