新手,求一存储过程,实现判断表中某记录一字段值,如大于某值时执行删除,否则执行更新
如题.
我有一数据表TestTable,包含字段:ID,TryTimes......
另有一数据表TestTable1,字段跟数据表TestTable相同
现要求弄一存储过程,传入参数为@ID,要求实现以下功能:
根据@ID查询到表TestTable中对应记录的TryTimes值,判断该值是否大于等于5,如果是,则将该条记录复制至TestTable1表,同时在TestTable中删除.如小于5,则执行更新语句,将表TestTable中该记录TryTimes值+1.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[Proc_Try]
(@ID int=0)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @TryTimes int
........... //这块不知如何弄,将表TestTable中的ID=@ID的记录字段TryTimes值赋给@TryTimes
IF @TryTimes <=0
UPDATE TestTable set TryTimes=TryTimes+1 where ID=@ID
ELSE
BEGIN
INSERT INTO TestTable1(TryTimes) SELECT TryTimes+1 FROM TestTable WHERE ID=@ID;
DELETE FROM TestTable WHERE ID=@ID;
END
END
问题点数:20、回复次数:4Top
1 楼lalakid(梦想总是那么美好……)回复于 2006-03-17 22:14:34 得分 20
被你搞糊涂了
还是说具体想控制什么吧Top
2 楼qpgsd(青苹果)回复于 2006-03-17 22:22:21 得分 0
呵呵,开始问的问题解决了.
使用这句:
SET @TryTimes=(SELECT TryTimes FROM TestTable where ID=@ID)
但,新的问题出来了.
IF,ELSE中包含的语句怎么写?语法是怎样的?Top
3 楼qpgsd(青苹果)回复于 2006-03-17 22:53:02 得分 0
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[Proc_Try]
(@ID int=0)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @TryTimes int
set @TryTimes=(select TryTimes from sWait where ID=@ID)
IF @TryTimes<=5
BEGIN
UPDATE sWait set TryTimes = TryTimes+1 where ID=@ID;
END
ELSE
BEGIN
INSERT INTO sFailure(TryTimes) SELECT TryTimes+1 FROM sWait WHERE ID=@ID;
DELETE FROM sWait WHERE ID=@ID;
END
END
麻烦帮忙看看,这句话有什么错误?Top
4 楼qpgsd(青苹果)回复于 2006-03-17 23:32:40 得分 0
我晕了.太不可思议了.
出错原因竟然是:UPDATE那句前面有空格.将空格去掉后,全部错误都消失了.
贴出来分享.前4个站出来顶者送分.Top




