SQL 循环遍历
2015-12-19 09:08
543 查看
一:遍历 数据表
select HID into #temp from MD_SheetTemplate where SheetStateID=1
declare @HID varchar(50)
WHILE EXISTS( select HID from #temp ) ---遍历临时表
begin
select top 1 @HID=HID from #temp
print @HID
delete from #temp where hid=@HID
end
二:遍历字符串
ALTER PROCEDURE [dbo].[sp_pro_pw]
@wcode varchar(10),
@pcode varchar(500)
AS
BEGIN
SET NOCOUNT ON;
set @pcode=@pcode+','; --删除最后一个,因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除
DECLARE @PointerPrev int
DECLARE @PointerCurr int
DECLARE @TId int
DECLARE @COUNT int
DECLARE @Newcode varchar(500)
Set @PointerPrev=1
while (@PointerPrev < LEN(@pcode))
Begin
Set @PointerCurr=CharIndex(',',@pcode,@PointerPrev)
if(@PointerCurr>0)
Begin
set @TId=cast(SUBSTRING(@pcode,@PointerPrev,@PointerCurr-@PointerPrev) as int)
select @COUNT=count(*) from zCheckWork_WP where wcode=@wcode and pcode=@TId
if(@COUNT=0)
begin
INSERT INTO [zCheckWork_WP]
([wCode]
,[PCode])
VALUES(@wcode,@TId);
end
SET @PointerPrev = @PointerCurr+1
End
else
Break
End
--删除已存在的数据
delete from zCheckWork_WP where wcode=@wcode and pcode not in( select str2table from StrToTable(@pcode))
return 1
END
select HID into #temp from MD_SheetTemplate where SheetStateID=1
declare @HID varchar(50)
WHILE EXISTS( select HID from #temp ) ---遍历临时表
begin
select top 1 @HID=HID from #temp
print @HID
delete from #temp where hid=@HID
end
二:遍历字符串
ALTER PROCEDURE [dbo].[sp_pro_pw]
@wcode varchar(10),
@pcode varchar(500)
AS
BEGIN
SET NOCOUNT ON;
set @pcode=@pcode+','; --删除最后一个,因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除
DECLARE @PointerPrev int
DECLARE @PointerCurr int
DECLARE @TId int
DECLARE @COUNT int
DECLARE @Newcode varchar(500)
Set @PointerPrev=1
while (@PointerPrev < LEN(@pcode))
Begin
Set @PointerCurr=CharIndex(',',@pcode,@PointerPrev)
if(@PointerCurr>0)
Begin
set @TId=cast(SUBSTRING(@pcode,@PointerPrev,@PointerCurr-@PointerPrev) as int)
select @COUNT=count(*) from zCheckWork_WP where wcode=@wcode and pcode=@TId
if(@COUNT=0)
begin
INSERT INTO [zCheckWork_WP]
([wCode]
,[PCode])
VALUES(@wcode,@TId);
end
SET @PointerPrev = @PointerCurr+1
End
else
Break
End
--删除已存在的数据
delete from zCheckWork_WP where wcode=@wcode and pcode not in( select str2table from StrToTable(@pcode))
return 1
END
相关文章推荐
- SQL的左连接和右连接有什么区别
- 修改oracle为归档模式
- 数据库基础与安装实战
- 数据库基础知识讲解
- 连接Oracle与Hadoop(3) 使用OLH加载Hbase到Oracle
- Oracle 12c 使用scott等普通用户的方法
- 介绍 .Net工具Code Snippet 与 Sql Server2008工具SSMS Tools Pack
- 一个从数据库中把数据导成txt的笨办法
- mysql5.7+sphinx plugin 源码安装
- PHP程序中使用adodb连接不同数据库的代码实例
- 简单整理MySQL的日志操作命令
- 深入解析MySQL的事务隔离及其对性能产生的影响
- Mac MySQ连接不成功:Error: Can't connect to local MySQL
- ubuntu 安装mysql及目录位置
- MySQL-Binlog解析篇:4 大体框架出炉
- Oracle MERGE raise ORA-00904 无效的标识符
- 使用从mysql中取数据
- orcale安装后没有tnsnnames.ora文件
- GROUP BY 子句
- SQLiteOpenHelper