SQL触发器的异常。。。高手》》》

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:01:42
create proc usp_sel_bydate_fo
@date datetime=convert(nvarchar(10),getdate(),120)
as
select * from flowout where convert(nvarchar(10),date,120)=@date

这段代码错在哪儿了?要求是:如果不输入参数就查询全部数据,输入参数就查询符合条件的数据,怎么写呢?谢谢!

首先这个不是触发器,是存储过程。

存储过程的参数的默认值不能是函数。

对于这样的问题,我通常是将datetime类型的默认值设置为一个实际使用中不会用到的值,然后再存储过程里判断是不是默认值。
create proc usp_sel_bydate_fo
@date datetime=0
as
if @date=0
set @date=convert(nvarchar(10),getdate(),120)
select * from flowout where convert(nvarchar(10),date,120)=@date

@date datetime=convert(nvarchar(10),getdate(),120)--这里的默认值不可以用getdate()函数

默认值必须是常量或 NULL

参数默认值类型都不对啊!