存储过程,怎么没有返回值啊?
- SQL code
USE [TSMISData]GO/****** Object: StoredProcedure [dbo].[ontime] Script Date: 09/28/2012 10:55:18 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc [dbo].[ontime] @begintime datetime, @endtime datetime, @ontmie_day intas declare @ERROR varchar(60)declare @tbl table(id int identity(1,1) primary key , dayname varchar )begin if len(@begintime)=0 or LEN(@endtime)=0 begin set @ERROR='输入的日期时间不能为空' end if ISDATE(@begintime)=0 or ISDATE(@endtime)=0 begin set @ERROR='您输入的时间格式有误!' return 1 end else begin while @begintime>@endtime begin insert @tbl(dayname)values(@begintime); set @begintime=@begintime+1; end end select @ontmie_day=COUNT(dayname) from @tbl where dayname not in ('星期六','星期日') return @ontmie_day end意图是算出给出时段排除周末的天数!
[解决办法]
ALTER proc [dbo].[ontime]
@begintime datetime,
@endtime datetime,
@ontmie_day int output
[解决办法]
你前端要怎么使用的?
ALTER proc [dbo].[ontime]
@begintime datetime,
@endtime datetime,
@ontmie_day int
as
declare @ERROR varchar(60)
declare @tbl table(id int identity(1,1) primary key , dayname varchar )
begin
if len(@begintime)=0 or LEN(@endtime)=0
begin
set @ERROR='输入的日期时间不能为空'这些地方你都没有返回,set来干嘛?
end
if ISDATE(@begintime)=0 or ISDATE(@endtime)=0
begin
set @ERROR='您输入的时间格式有误!'同上
return 1
end
else
begin
while @begintime>@endtime
begin
insert @tbl(dayname)values(@begintime);
set @begintime=@begintime+1;
end
end
select @ontmie_day=COUNT(dayname) from @tbl where dayname not in ('星期六','星期日') 红字哪里也可以去掉
return @ontmie_day 这个可以不用
end
我感觉你这个用一个表值函数来实现就可以了
[解决办法]
你都没有输出参数。
[解决办法]
你究竟要输出什么信息?看你的存储过程,既有错误代码,又有表变量,还有@ontmie_day int参数,你是要全部都输出?
改成这样试试:
- SQL code
ALTER proc [dbo].[ontime] @begintime datetime,@endtime datetime,@ontmie_day INT OUTPUT -- -1表示您输入的时间格式有误,-2表示输入的日期时间不能为空,大于0表示有记录as begin declare @tbl table(id int identity(1,1) primary key , [dayname] varchar ) if len(@begintime)=0 or LEN(@endtime)=0 begin set @ontmie_day = -2 RETURN END if ISDATE(@begintime)=0 or ISDATE(@endtime)=0 begin set @ontmie_day = -1 RETURN end else begin while @begintime>@endtime begin insert @tbl(dayname) values(@begintime); set @begintime=@begintime+1; end END select @ontmie_day=COUNT(dayname) from @tbl where [dayname] not in ('星期六','星期日') end
[解决办法]
把需要输出的变量(存储过程的参数)加output