sql循环for
⑴ 我想用for循环一个sql语句并且限制循环数量怎么实现,请高手帮忙
for($i=0;$i<10;$i++){
$row=mysql_query("select * from level1");
}
这样就是循环10次了。如果要其他 数修改$i<多少就行了。不过不建议使用循环sql。效率不好。如果是正式网站,容易卡死
⑵ mysql sql中流程控制有for循环吗
MySQL不支持FOR loops循环。
只有LOOP循环:
[begin_label:] LOOP
statement_list
END LOOP [end_label]
CREATE PROCEDURE doiterate(p1 INT)
BEGIN
label1: LOOP
SET p1 = p1 + 1;
IF p1 < 10 THEN
ITERATE label1;
END IF;
LEAVE label1;
END LOOP label1;
SET @x = p1;
END;
LOOP实现了一个简单的循环结构,允许重复执行语句列表,该列表由一个或多个语句组成,每个语句以分号(;)分隔符结束。 循环中的语句将重复执行,直到循环终止。 一般情况,通过LEAVE终止循环。 在函数中,也可以使用RETURN,它完全退出函数,也同时终止循环。
(2)sql循环for扩展阅读
mysql流程控制结构:
顺序结构:程序从上往下依次执行,
分支结构:程序从两条或多条路径中选中一条去执行,
循环结构:程序在满足一定条件的基础上,重复执行一段代码。
分支结构
1、if函数
功能:实现简单的双分支
语法:
if(表达式1,表达式2,表达式3)
执行顺序:
如果表达式1成立,则if函数返回表达式2的值,否则返回表达式3的值
应用:任何地方(在begin end中或外面都可以)
2、case结构
情况1:类似于java中的switch语句,一般用于实现等值判断
语法:
CASE 变量|表达式|字段
WHEN 要判断的值 THEN 返回的值1或语句1;
WHEN 要判断的值 THEN 返回的值2或语句2;
...
ELSE 要返回的值n或语句n;
END CASE;
情况2:类似于java中的多重IF语句,一般用于实现区间判断
语法;
CASE
WHEN 要判断的条件1 THEN 返回的值1或语句1;
WHEN 要判断的条件2 THEN 返回的值2或语句2;
...
ELSE 要返回的值n或语句n;
END CASE;
⑶ 我想用PLSQL写一个FOR循环
FOR I IN 1..10 LOOP
IF I<>6 AND I<>8 THEN
INSERT INTO MESSAGE(results) VALUES(I);
END IF;
END LOOP;
COMMIT;
⑷ SQL 简单高效的使用FOR循环批量操作数据
//自定义字符串
declare @orderNum varchar(255)
//创建虚拟表
create table #ttableName(id int identity(1,1),Orders varchar(255))
//自定义自然数和行数
declare @n int,@rows int
//将要操作的数据查询出来,插入到创建的虚拟表钟
insert #ttableName(orders) select userID from DEV_USER where USERID not in (select CODE_OPT from SYS_MKQXOPT where SYS_CODE = '05')
--select @rows=count(1) from pe_Orders
//将行数赋予rows自定义行数
select @rows =@@rowcount
//自然数n赋值为1
set @n=1
//while循环,当自然数n小于等于行数时执行循环
while @n<=@rows
//开始
begin
//此处操作虚拟表查出第n行数据,用于操作数据
insert into SYS_MKQXOPT (CODE_OPT,SYS_CODE,Type) values ((select Orders from #ttableName where id=@n),'05','1')
//打印字符串
print (@OrderNum)
//n即行数+1
select @n=@n+1
//结束
end
//删除虚拟表
drop table #ttableName
⑸ sqlserver中怎样使用游标for循环
给你举个例子
利用游标循环更新、删除MemberAccount表中的数据DECLARE My_Cursor CURSOR --定义游标FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游标中OPEN My_Cursor; --打开游标FETCH NEXT FROM My_Cursor ; --读取第一行数据WHILE @@FETCH_STATUS = 0 BEGIN --UPDATE dbo.MemberAccount SET UserName = UserName + 'A' WHERE CURRENT OF My_Cursor; --更新 --DELETE FROM dbo.MemberAccount WHERE CURRENT OF My_Cursor; --删除 FETCH NEXT FROM My_Cursor; --读取下一行数据 ENDCLOSE My_Cursor; --关闭游标DEALLOCATE My_Cursor; --释放游标GO
⑹ sql for循环比如说@Num<=5, @Num可能为1,3,4,这样的数字
while @Num<=5
begin
需要处理的语句...
set @Num = @Num + 1
end
⑺ 在sql server中循环语句 for要怎么使用
sql server里有循环语句,在sqlserver 数据库中,while循环语句是最常用的语句之一,for指定次数用的很少。比如:
SQL循环语句
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
while 条件
begin
执行操作
set @i=@i+1
end
WHILE
设置重复执行 SQL 语句或语句块的条件,只要指定的条件为真,就重复执行语句,可以使用 BREAK 和 CONTINUE 关键字在循环内部控制 WHILE 循环中语句的执行。
语法
WHILE Boolean_expression
{ sql_statement | statement_block }
[ BREAK ]
{ sql_statement | statement_block }
[ CONTINUE ]
参数
Boolean_expression
返回 TRUE 或 FALSE 的表达式。如果布尔表达式中含有 SELECT 语句,必须用圆括号将 SELECT 语句括起来。
{sql_statement | statement_block}
Transact-SQL 语句或用语句块定义的语句分组,若要定义语句块,请使用控制流关键字 BEGIN 和 END。
BREAK
⑻ sqlserver中怎样使用游标for循环
给你举个例子
利用游标循环更新、删除MemberAccount表中的数据
DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor ; --读取第一行数据
WHILE @@FETCH_STATUS = 0
BEGIN
--UPDATE dbo.MemberAccount SET UserName = UserName + 'A' WHERE CURRENT OF My_Cursor; --更新
--DELETE FROM dbo.MemberAccount WHERE CURRENT OF My_Cursor; --删除
FETCH NEXT FROM My_Cursor; --读取下一行数据
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO
⑼ 对SQL 插入语句进行for循环 可以吗
理论上应该能成功。检查一下:循环插入是否违反约束(比如主键列之类);在循环开始前Open,结束后Close比较好,节省时间;试试把一次执行改成单独完整的Sub子程序,再for循环调用;试试一次性拼接多个sql语句,分号隔开。
⑽ 如何使用for循环更新sql 语句
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为该存储过程的参数,如果有多个参数,使用“,”分开就可以了,这也是存储过程调用另一个存储过程的一种方法。