CURSOR 游标中动态表查询

--今天需要删除项目下面的所有发包,每个发包都有不同的类型,每个类型又有不同表,所以就遇到了动态FOR select表的情况
declare @PROJECT_ID varchar(50),@tablename varchar(50), @wf_b_id varchar(50),@wfid varchar(20),@Sql varchar(500)

set @PROJECT_ID='P2012189'
set @wfid=''
set @tablename=''
begin
		exec('select tablename into newtable from PM_GCPS_TBL')--这里将表名存到一个新表中,很多方式的
		DECLARE MyCursor CURSOR	
			FOR select tablename from newtable

		OPEN MyCursor
		FETCH NEXT FROM  MyCursor INTO @tablename
			WHILE @@FETCH_STATUS =0
			BEGIN
					
--这块是重点PROJECT_ID='''+@PROJECT_ID+''+'''' 项目ID 是字符型的 ,这么多‘'’很不好把握	
		SET @Sql='DECLARE MyCursor2 CURSOR  FOR select wf_b_id from '+ @tablename+' where PROJECT_ID='''+@PROJECT_ID+''+''''

 		EXEC(@Sql)

		OPEN MyCursor2
			FETCH NEXT FROM  MyCursor2 INTO @wf_b_id
			WHILE @@FETCH_STATUS =0
			BEGIN

			set @wfid=(select wf_link_id from WF_TYPE_LINK_VALUE_TBL where link_value=@wf_b_id)
		delete WF_TYPE_LINK_VALUE_TBL where link_value=@wf_b_id
								delete WF_STEP_TBL where wf_id=@wfid 
		--这块也是
		set @Sql = 'delete from '+@tablename+' where wf_b_id='''+@wf_b_id+''+''''
		exec (@sql)


								FETCH NEXT FROM  MyCursor2 INTO @wf_b_id
						END	
					CLOSE MyCursor2
					DEALLOCATE MyCursor2
					

					FETCH NEXT FROM  MyCursor INTO @tablename
			END	
		CLOSE MyCursor
		DEALLOCATE MyCursor
	
end
drop table newtable

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值