主题:这个存储过程为甚么用不了?
xiaoyue222
[专家分:130] 发布于 2008-01-30 15:59:00
alter procedure insertTable_A
@A_Name char(50),
@A_DateTime datetime=getDate
as
insert into Table_A(A_Name,A_DateTime) values(@A_Name,@A_DateTime)
-------缺省参数使用
execute insertTable_A 'asdfa'
回复列表 (共11个回复)
沙发
a97191 [专家分:4040] 发布于 2008-01-31 09:28:00
datetime=getDate这个应该错吧
板凳
xiaoyue222 [专家分:130] 发布于 2008-01-31 09:44:00
编译存储过程没有报错 加上 getDate() 后连编译都通不过?
3 楼
菜鸭 [专家分:5120] 发布于 2008-01-31 11:00:00
存储过程的参数如果用默认值,这个默认值必须为常数或null
可这样写
alter procedure insertTable_A
@A_Name char(50)
as
insert into Table_A(A_Name,A_DateTime) values(@A_Name,getdata())
4 楼
happyboy2007 [专家分:3900] 发布于 2008-01-31 12:17:00
alter procedure insertTable_A(
@A_Name char(50),
@A_DateTime datetime=getDate())
as
insert into Table_A(A_Name,A_DateTime) values(@A_Name,@A_DateTime)
5 楼
xiaoyue222 [专家分:130] 发布于 2008-01-31 17:50:00
TO 4楼,那种修改根本没法编译。
TO 3楼,谢谢你但是那个不是我想要的结果。因为我有可能通过传值传入时间,也有可能忽略时间从而采用数据库默认时间。
继续UP
6 楼
liulei001 [专家分:12820] 发布于 2008-01-31 20:02:00
占楼,明天去公司弄。
7 楼
菜鸭 [专家分:5120] 发布于 2008-02-01 10:45:00
TO 3楼,谢谢你但是那个不是我想要的结果。因为我有可能通过传值传入时间,也有可能忽略时间从而采用数据库默认时间。
===
这样行不?
alter procedure insertTable_A
@A_Name char(50),
@A_DateTime datetime
as
declare @d datetime
set @d=isnull(@A_DateTime,getdate())
insert into Table_A(A_Name,A_DateTime) values(@A_Name,@d)
8 楼
xiaoyue222 [专家分:130] 发布于 2008-02-02 11:12:00
谢谢7楼.你的方法可以.但是这样的话datetime就变成必选参数了.必须填写null有没有使用可选参数的方法? 谢谢!
9 楼
菜鸭 [专家分:5120] 发布于 2008-02-02 13:31:00
再加一个判断试试
alter procedure insertTable_A
@A_Name char(50),
@A_DateTime datetime
as
if @A_DateTime is null
insert into Table_A(A_Name,A_DateTime) values(@A_Name,getdate())
else
insert into Table_A(A_Name,A_DateTime) values(@A_Name,@A_DateTime)
10 楼
xiaoyue222 [专家分:130] 发布于 2008-02-02 14:26:00
呵呵.不是.
alter procedure insertTable_A
@A_Name char(50),
@A_DateTime datetime
as
...
这里声明了2个参数,如果参数没有默认值是不能省略的~
我来回复