注册 登录
编程论坛 SQL Server论坛

过程调用问题!

bearlin520 发布于 2010-10-14 10:11, 406 次点击
因为上一个问题结贴了,所以新开一贴,希望得到高人指点。
我有一个表比如:
11  22  33   44   55  66
**  **  **   **   **  21:45:03
**  **  **   **   **   22:46:00
**  **  **   **   **    20:32:03
**  **  **   **   **    22:50:00

我如何才能把21:45:03   22:46:00  22:50:00找出来
更新成新值,并且每一个值都要不一样。
6 回复
#2
bearlin5202010-10-14 16:56
declare @bhxh int
SET @BHXH=1
WHILE @BHXH<3000
BEGIN
declare @va varchar(20)
exec upfdatesj @va output
update yskq set sj=(select @va) WHERE SJ>'21:00:00' AND BH=@BHXH
SET @BHXH=@BHXH+1
end
今天我用其中的一项(11)做循环,但是还是达不到想要的效果。如果能俩条件同时循环的话有点希望。高手们帮帮忙啊!
#3
cnfarer2010-10-15 09:23
看不明白
#4
bearlin5202010-10-15 09:56
表结构如下:
bh        xm          rq            sj  
1         王一       2010-10-05    08:10:00
2         王二       2010-10-05    08:00:10
1         王一       2010-10-05    22:00:05            
2         王二       2010-10-05    23:00:00
*
*
*
*
 如此表,我要把sj列大于22:00:00的值,换成一个与当天内时间不重复的值。(原理就和考勤一样)。麻烦各位多帮忙!
#5
cnfarer2010-10-15 16:33
upfdatesj这个存储过程是生成不重复时间的吗?改成函数吧?!这样就不用循环了
#6
bearlin5202010-10-16 08:29
是的这个存储过程是生成不重复时间,可是每次只能生成一个时间。如果不用循环,要怎么做?
用存储过程和用函数没有多大影响吧!请指点!万分感谢,能加QQ再聊聊吗?我的是5216710 验证:熊
#7
bearlin5202010-10-16 10:00
declare @bhxh int,@datexh datetime, @starttime   datetime, @endtime   datetime
set @bhxh=1,@bhxh<3000,@datexh='2009-01-01',@datexh<'2011-01-01'
while @bhxh=bh
begin
update table_name set sj=(dateadd(second,convert(int,(rand()*datediff(second,@starttime,@endtime))), @starttime ))
WHERE SJ>'21:00:00'
while @datexh=rq
begin
@datexh=@datexh+1
end
end
我的想法是分别找出某天(rq)某人(bh)大于21:00:00的值后更新,这样就不会违反条件约束了(某天出现同一个值)。上面程序有语法错误,请帮忙看看。想请教高手还有不有其它好的办法。
1