oracle的SQL语句中如何实现 删除多张表中同一字段值为1的所有参数的值?

oracle的SQL语句中如何实现删除多张表中同一字段值为1的所有参数的值?例如delete*from(selecttabke_nanefromall_tableswhe... oracle的SQL语句中如何实现 删除多张表中同一字段值为1的所有参数的值?
例如delete * from (select tabke_nane from all_tables where owner = 'abc') where delflag = 1; 我是想把这个用户下所有表中那个字段值为1的数据都删掉。但是我写的SQL语句是错的,表名不能是结果集合。

想问一下正确的SQL要怎么写。
展开
 我来答
殇离_彼岸花
2016-12-28
知道答主
回答量:6
采纳率:0%
帮助的人:6.2万
展开全部
这个明显用存储过程啊

create or replace PROCEDURE sp_table_delete AS
sqlstr varchar2(2000);
BEGIN
declare
--类型定义
cursor c_table is
select table_name as table_name from all_tables where owner = 'abc';
--定义一个游标变量
C_ROW C_TABLE%ROWTYPE;
begin
FOR C_ROW IN C_TABLE LOOP
begin
SQLSTR := 'delete from ' || C_ROW.TABLE_NAME ||
' where delflag = 1';
EXECUTE IMMEDIATE SQLSTR;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('异常');
end;
end loop;
end;
end;
鬼谷子教主
2016-12-20 · TA获得超过2496个赞
知道大有可为答主
回答量:1996
采纳率:88%
帮助的人:567万
展开全部
不支持同时删除多表!
更多追问追答
追问
那有什么解决方法吗?
追答

作为一次性工作,(通过访问DB元数据表)先批量生成所有的删除语句,然后全部执行。

----------------------

select  'DELETE * FROM ' + Table_Name + ' WHERE delFlag = 1;' 
from all_tables 
where owner = 'abc'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吉人有吉事
2016-12-20 · 知道合伙人软件行家
吉人有吉事
知道合伙人软件行家
采纳数:1524 获赞数:4061
毕业于吉林大学,从事软件开发行业10余年,在金融担保,医疗,电子政务领域积累了相当多的经验

向TA提问 私信TA
展开全部
写存储过程吧
追问
我的用户下有几百张表,那样的话会不会还是要写几百多句SQL?  并没有优化啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式