CREATE PROC p_MakeRequest
@roomid char(20),
@week char(7),
@dayofweek char(7),
@period char(10),
@submittime varchar(50),
@person char(20),
@phone char(20),
@reason varchar(50),
@priority int
AS
declare @cnt intBEGIN
select @cnt=count(1)--看看有没有高优先级的申请
from RoomRequest
where R_ID=@roomid
and R_OccupyWeek=@week
and R_OccupyDayofWeek=@dayofweek
and R_OccupyPeriod=@period
and R_Priority>=@priorityif(@cnt>0)--有,则返回
return -1 --sqlserver默认自动返回0。
else--没有删除低优先级的,并插入新的申请
BEGIN
delete RoomRequest
where R_ID=@roomid
and R_OccupyWeek=@week
and R_OccupyDayofWeek=@dayofweek
and R_OccupyPeriod=@period
--and R_Priority<@priority insert into RoomRequest
values (@roomid,@week,@dayofweek,@period,
@submittime,@person,@phone,
@reason,@priority)
return 1
END
END
GO
程序执行老是返回0.但是相应的操作都进行了。
不知道为什么?
declare @num int
select @num=1
declare @bian1 varchar(12)
select @bian1='sss'
--这个@num才是返回值。
exec @num=cccc 'rrr',@bian1 output
select @num as num , @bian1 as bian1
类似这种
as
if(@in>0)
set @out=1
else
set @out=-1godeclare @out int
exec t_pro -3,@out output
select @out/**
-----------
-1(所影响的行数为 1 行)
**/
GO
SET ANSI_NULLS ON
GOALTER procedure p_Test @Value varchar(20)='1',@rt varchar(4) output
as
if @value=1 set @rt='对'
else set @rt='错'
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
DECLARE @Value varchar(20)
EXEC [a].[dbo].[p_Test] '1', @Value output
print @value
--add
set @cnt=0
--************************
BEGIN
select @cnt=count(1)--看看有没有高优先级的申请
from RoomRequest
where R_ID=@roomid
and R_OccupyWeek=@week
and R_OccupyDayofWeek=@dayofweek
and R_OccupyPeriod=@period
and R_Priority>=@priority
--add
print @cnt
CREATE PROC p_Login
@name char(20),
@passwd char(20)
AS
DECLARE @t_pwd char(20)
BEGIN
SELECT @t_pwd=U_Password
FROM Login
WHERE U_Name=@name
IF @passwd = @t_pwd
return 1
ELSE
return 0
END
GO
否则程序里不能获得?
您写的代码我试了,可以正确的获取@cnt
BEGIN
--add
set nocount on
select @cnt=count(1)--看看有没有高优先级的申请