CURSOR 游标中动态表查询
2012-10-19 17:42
176 查看
--今天需要删除项目下面的所有发包,每个发包都有不同的类型,每个类型又有不同表,所以就遇到了动态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
相关文章推荐
- 利用临时表、REF游标、动态SQL实现分页查询
- Cursor 数据库查询游标的应用
- 动态游标(REF CURSOR)
- Cursor 数据库查询游标的应用
- 动态游标(REF CURSOR)
- oracle函数返回结果集(动态查询Sql并定义游标)
- 游标遍历exec动态sql语句查询结果
- 动态查询,动态生成cursor或者动态执行SQL的DML操作
- oracle函数返回结果集(动态查询Sql并定义游标)
- oracle在declare中根据查询的结果定义游标,游标的select statement部分是动态的。
- 【android】Cursor记录集游标、ListView和SimpleCursorAdapter、ListView数据动态更新
- SQL语句查询结果集中的动态修改案例(临时表+游标)
- SQL语句查询结果集中的动态修改案例(临时表+游标)
- 简单测试动态游标(REF CURSOR)的使用
- Oracle动态sql返回游标(sys_refcursor)
- SQL语句查询结果集中的动态修改案例(临时表+游标)
- SQL语句查询结果集中的动态修改案例(临时表+游标)
- 7. 动态SQL与模糊查询
- Linq to Entity经验:动态查询
- Mybatis 不确定条件查询(动态语句where和if)借助实体类封装参数