SQL,用select ...from... 出来的值,如何设置循环语句,依次做declare和set赋值
select...from...出来的值是一组数据,需要SQL依次使用数据值,来循环语句执行同样的命令。即:先搜索出值,再把值排序,依次进行循环语句中执行命令。...
select ...from... 出来的值是一组数据,需要SQL依次使用数据值,来循环语句执行同样的命令。
即:先搜索出值,再把值排序,依次进行循环语句中执行命令。 展开
即:先搜索出值,再把值排序,依次进行循环语句中执行命令。 展开
1个回答
展开全部
--其实你可以说的更清楚点,你要实现什么?
Declare @ID int,@filename VArchar(100)
Declare @Cmd VArchar(1000)
DECLARE Cur CURSOR FOR
Select ID,filename From 表 Order By id
--这句Select是你要查询出来的数据并排序
OPEN Cur
FETCH NEXT FROM Cur INTO @ID,@filename
WHILE @@FETCH_STATUS = 0
BEGIN
--这里写你依次要执行的命令
Set @Cmd=''
Exec (@cmd)
FETCH NEXT FROM Cur INTO @ID,@filename
END
CLOSE Cur
DEALLOCATE Cur
追问
我是想要依次删除ID为1到4的单据记录,此前的SQL语句如下:
--1、定义单据ID值
@id=1 --(应收1,预收2,……)
--2、定义单据属性值
--当@id=1时,@frp=1,@ftype=1,当@id=2时,@frp=1,@ftype=5,……
--3、删除单据
Delete t_RP_Contact where FRP =@frp and FType =@ftype
追答
--那个字符串拆分的函数,在这可以使用
--你得到的id是一个字符串比如A\B\C\D\E\F
--那么这个字符串里有A就删掉A对应的数据,有B就删除B对应的数据
--对应关系是,如果是A,则FRP=什么,FType=什么
--是不是这个意思
Declare @ID int,@Col VArchar(100)
Declare @Cmd VArchar(1000)
DECLARE Cur CURSOR FOR
Select * from dbo.f_split1('A\B\C\D\E\F','\')
--这句Select是你要查询出来的数据并排序
OPEN Cur
FETCH NEXT FROM Cur INTO @ID int,@Col
WHILE @@FETCH_STATUS = 0
BEGIN
Delete t_RP_Contact where FRP =
Case @Col
When ='A' then 1
When ='B' then 2
When ='C' then 3
else 其他 End
and FType =
Case @Col
When ='A' then 1
When ='B' then 2
When ='C' then 3
else 其他 End
FETCH NEXT FROM Cur INTO @ID,@filename
END
CLOSE Cur
DEALLOCATE Cur
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询