当前位置:首页 » 编程语言 » sql存储过程循环表
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql存储过程循环表

发布时间: 2022-09-23 11:29:26

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