SQL,用select ...from... 出来的值,如何设置循环语句,依次做declare和set赋值

select...from...出来的值是一组数据,需要SQL依次使用数据值,来循环语句执行同样的命令。即:先搜索出值,再把值排序,依次进行循环语句中执行命令。... select ...from... 出来的值是一组数据,需要SQL依次使用数据值,来循环语句执行同样的命令。
即:先搜索出值,再把值排序,依次进行循环语句中执行命令。
展开
 我来答
鲜美还清湛灬白桦N
推荐于2017-12-16 · TA获得超过620个赞
知道小有建树答主
回答量:404
采纳率:50%
帮助的人:526万
展开全部
--其实你可以说的更清楚点,你要实现什么?
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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式