我有一个程序:
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()
答案 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()