Ⅰ sql语句编写存储过程,使用游标循环打印学生表中的数据,求大神
写一个例子给楼主看下就知道了:
在sqlserver2000中新建一个存储过程:
CREATEPROCEDUREPK_Test
AS
//声明1个变量
declare@namenvarchar(20)
//声明一个游标mycursor,select语句中参数的个数必须要和从游标取出的变量名相同
//打开游标
openmycursor
//从游标里取出数据赋值到我们刚才声明的2个变量中
fetchnextfrommycursorinto@name
//判断游标的状态
//0fetch语句成功
//-1fetch语句失败或此行不在结果集中
//-2被提取的行不存在
while(@@fetch_status=0)
begin
//显示出我们每次用游标取出的值
print'游标成功取出一条数据'
print@name
//用游标去取下一条记录
fetchnextfrommycursorinto@name
end
//关闭游标
closemycursor
//撤销游标
deallocatemycursor
GO
Ⅱ SQL 用存储过程统计表里的数据,想用临时表循环,请教大侠们
楼主,不至于这么复杂的。一个简单的统计,还需要临时表做什么呢?基本上就是一个简单汇总查询而已,如果程序要求,你可以封装成存储过程,但是我个人觉得不需要的,SQL如下:
select 款号,颜色,尺码,工号,时间,sum(件数) as 总计件数,count(*) as 总行数 from table
group by 款号,颜色,尺码,工号,时间
Ⅲ sql 循环调用存储过程
你的语句里,@randCardID都是默认值,所以是重复的。
create table #temp(str char(19))
declare @randCardID char(19)
exec proc_randCardID @randCardID output
declare @num int
set @num = 0
while(@num <10)
begin
insert #temp select @randCardID
exec proc_randCardID @randCardID output
---这一句要改
set @num = @num +1
end
select * from #temp
drop table #temp
Ⅳ Sql存储过程游标循环的用法及sql如何使用cu
--1.声明名称为
cursor_fruit的游标USE sample_db;GODECLARE cursor_fruit CURSOR FORSELECT f_name,f_price FROM fruits;
--2.打开游标
OPEN cursor_fruit;
--3.读取游标中的数据
--【例】使用名称为cursor_fruit的光标,检索fruits表中的记录,输入如下:USE sample_db;
GOFETCH NEXT FROM cursor_fruit
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM cursor_fruit
END;
--4.关闭关闭名称为cursor_fruit的游标
CLOSE cursor_fruit
--5.释放游标
DEALLOCATE cursor_fruit;
Ⅳ sqlserver存储过程何循环读表。
使用游标,如下
CREATE PROCEDURE proc_getalltable
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tablename VARCHAR(100),@sql VARCHAR(1000)
DECLARE tablename CURSOR FOR SELECT tname FROM tablelist
OPEN tablename
FETCH NEXT FROM tablename INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @sql = 'SELECT * FROM ' + @tablename
EXEC(@sql)
FETCH NEXT FROM tablename INTO @tablename
END
CLOSE tablename
DEALLOCATE tablename
END
GO
Ⅵ Sql存储过程中怎么写循环某个表的行
使用游标,具体看你使用那个数据库了。
每个数据库使用游标的方法有些差别的。
Ⅶ SQL 怎么使用存储过程循环删除多张表记录
用while 循环
create procere 存储过程名
@ 传的表名的字符串 varchar(max)
as
declare @inx int
declare @tablename varchar(max)
as
while(CHARINDEX('&',@传的表名的字符串)>0)
begin
set @idx =CHARINDEX('&',@传的表名的字符串)>
set @tablename = SUBSTRING(@传的表名的字符串,0,@idx)
delete @tablename where 条件
set @传的表名的字符串 = SUBSTRING((@传的表名的字符串,@idx+1, len(@传的表名的字符串)-@idx)
不过传的字符串是table1&table2$table3& 这个样子的
Ⅷ sql 存储过程里面如何 对数据集循环
A. 在简单的游标中使用 FETCH
以下示例为 Person.Contact 表中姓氏以字母 B 开头的行声明了一个简单的游标,并使用 FETCH NEXT 逐个提取这些行。FETCH 语句以单行结果集形式返回在 DECLARE CURSOR 中指定的列的值。
USEAdventureWorks
GO
DECLAREcontact_cursorCURSORFOR
SELECTLastNameFROMPerson.Contact
WHERELastNameLIKE'B%'
ORDERBYLastName
OPENcontact_cursor
--Performthefirstfetch.
FETCHNEXTFROMcontact_cursor
--Check@@FETCH_.
WHILE@@FETCH_STATUS=0
BEGIN
--.
FETCHNEXTFROMcontact_cursor
END
CLOSEcontact_cursor
DEALLOCATEcontact_cursor
GO
B. 使用 FETCH 将值存入变量
以下示例与示例 A 相似,但 FETCH 语句的输出存储于局部变量而不是直接返回到客户端。PRINT 语句将变量组合成单一字符串并将其返回到客户端。
USEAdventureWorks
GO
--.
DECLARE@LastNamevarchar(50),@FirstNamevarchar(50)
DECLAREcontact_cursorCURSORFOR
SELECTLastName,FirstNameFROMPerson.Contact
WHERELastNameLIKE'B%'
ORDERBYLastName,FirstName
OPENcontact_cursor
--.
--Note:
--intheSELECTstatement.
FETCHNEXTFROMcontact_cursor
INTO@LastName,@FirstName
--Check@@FETCH_.
WHILE@@FETCH_STATUS=0
BEGIN
--.
PRINT'ContactName:'+@FirstName+''+@LastName
--.
FETCHNEXTFROMcontact_cursor
INTO@LastName,@FirstName
END
CLOSEcontact_cursor
DEALLOCATEcontact_cursor
GO
Ⅸ SQL 2005 存储过程,循环执行的方法
使用游标,cursor .. FETCH NEXT
或者,如果闲游标麻烦,也可以试试while循环
@xCount = select count(*) from tb where
declare @x int
set @x = 1
while(@i <= @xCount)
begin
# do sth
set @x = @x + 1
end