
CREAT PROCEDURE tester
AS
BEGIN
SET NOCOUNT ON;
DECLARE @userId varchar(50)
DECLARE @count int
SET @count = 0
SELECT @count = count() FROM UserService_User WHERE Account like '%111%'
WHILE @count > 0
BEGIN
SELECT @userId = Id FROM UserService_User WHERE Account like '%111%'
exec UserService_RemoveUserByUserId @userId
SET @count = @count -1
END
END
说明:
1、此存储过程在SQL SERVER 2005上测试通过,值得注意的是,循环体中,语句是使用BEGIN……END包括的,而不是网络上常说的WHILE ……END WHILE结构,其他的循环语句,如LOOP ……UNTIL……END LOOP也不能通过编译,也许是版本的问题,但在SQL SERVER2005中,循环体使用BEGIN……END就可以,而不能使用网络上常说的WHILE ……END WHILE结构。
2、循环体中 UserService_RemoveUserByUserId 是一个存储过程的名称,@userId为该存储过程的参数,如果有多个参数,使用“,”分开就可以了,这也是存储过程调用另一个存储过程的一种方法。
你看这里
do
while
not
rs1eof'这里是RS1的循环,输出所有ID值等于rs("ID")的所有数据,
-------------
if
rs1("id")=3
then'如果ID等于三的话就换行
rs1movenext
else-------------
rs1movenext'这里是RS1如果是最后一行的话跳出do
while
not
rs1eof执行下面的,
end
if
loop
这样,不过你ID是不是等于3都rs1movenext'所以这里是你的思路问题,或是我没有理解清楚补允一下,rs1movenext'只是记录指针下移一条
华子你们搞的神马Postgre数据库,貌似是在Linux下见过
WHILE expression LOOP
statements
END LOOP;
或者
FOR name IN [ REVERSE ] expression expression LOOPstatements
END LOOP;
是这个么?
'呵,何必这么复杂,如果要输出与数组相关的话,不要忘了asp里有个很好用的rsGetRows()了,给你段最简单的代码吧,如下:dim rs,arr,iset rs=connexecute("select from Navigation where ViewFlag order by Sequence asc")if not rseof then arr=rsGetRows() '这里把符合条件的所有记录都保存到了arr中,这里赋值后的arr就等于是一个二维数组了end if
rscloseset rs=nothing'上面代码就完成了从数据库读取数据到数组变量了,接下来只要输出数据,你只需要判断arr是否数组if isarray(arr) then for i=0 to ubound(arr,2) '上面有仁兄说过数组长度由ubound下标决定没错,所以你只要确定第二维的下标就知道数组长度ubound(arr,2),当然第一维就是ubound(arr,1)或者ubound(arr)就行了 responsewrite arr(0,i) '这里就是输出数组item了 responsewrite "<br>" '每输出一个数据就换一行,当然你也可以改成别的 nextelse responsewrite "暂无导航"end if '搞定
以上就是关于SQL利用循环语句插入数据全部的内容,包括:SQL利用循环语句插入数据、关于ASP的问题(数据库+do while循环深奥的问题)、Postgre 数据库 循环 存储过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)