plsql 开发实战问题一: 如何更新一个表的所有列
来源:互联网 发布:淘宝客服规范用语 编辑:程序博客网 时间:2024/05/22 12:22
安生(970078354) 18:18:03
有没有方法把表中的字段的所有数据中的某个字母替换成其他的,不用判断是哪一列的,只要表中出现某个字母就直接替换成其他的呢
今天群里有个学生问,如何有办法更新一个表中的所有列:
很简单哈:
轻松加愉快写完代码:
declare
v_sql varchar2(200);
v_sql1 varchar2(200);
begin
for i in (select column_name from
user_tab_cols where table_name in ('EMP'))
loop
v_sql :='update emp set '||i.column_name||
'=replace('||i.column_name||',''a'',''b'')';
execute immediate v_sql;
--dbms_output.put_line(v_sql);
end loop;
end;
如果我们再复杂点, 如果要传表名,可以不?
那也很简单:
create or replace procedure rep_1(v_t varchar2,v_o varchar2) is
delcare
v_tname varchar2(200);
v_oname varchar2(200);
cursor c_col is select column_name from dba_tab_columns where table_name= v_tname and owner= v_oname;
begin
v_tname := v_t;
v_oname := v_o;
for x in c_col loop
dbms_output.put_line(x.column_name);
end loop;
end;
/
create table test_rep(t1 varchar2(10),t2 varchar2(10),t3 varchar2(10));
insert into test_rep values('aacde','bdace','cdtga');
insert into test_rep values('aaaa','bytbae','cdataga');
SQL> select * from test_rep;
T1 T2 T3
---------- ---------- ----------
aacde bdace cdtga
aaaa bytbae cdataga
grant select on dba_tab_columns to scott;
create or replace procedure rep_1(v_t in varchar2,v_o in varchar2) is
cursor c_col is select column_name from dba_tab_columns where table_name=v_t and owner=v_o;
v_sql varchar2(200);
begin
for x in c_col loop
v_sql := 'update '||v_t||' set '||x.column_name||' = replace('||x.column_name||',''a'',''b'')';
execute immediate v_sql;
end loop;
end;
/
SQL> exec rep_1('TEST_REP','SCOTT');
PL/SQL procedure successfully completed.
SQL> select * from test_rep;
T1 T2 T3
---------- ---------- ----------
bbcde bdbce cdtgb
bbbb bytbbe cdbtbgb
delcare
v_tname varchar2(200);
v_oname varchar2(200);
cursor c_col is select column_name from dba_tab_columns where table_name= v_tname and owner= v_oname;
begin
v_tname := v_t;
v_oname := v_o;
for x in c_col loop
dbms_output.put_line(x.column_name);
end loop;
end;
/
create table test_rep(t1 varchar2(10),t2 varchar2(10),t3 varchar2(10));
insert into test_rep values('aacde','bdace','cdtga');
insert into test_rep values('aaaa','bytbae','cdataga');
SQL> select * from test_rep;
T1 T2 T3
---------- ---------- ----------
aacde bdace cdtga
aaaa bytbae cdataga
grant select on dba_tab_columns to scott;
create or replace procedure rep_1(v_t in varchar2,v_o in varchar2) is
cursor c_col is select column_name from dba_tab_columns where table_name=v_t and owner=v_o;
v_sql varchar2(200);
begin
for x in c_col loop
v_sql := 'update '||v_t||' set '||x.column_name||' = replace('||x.column_name||',''a'',''b'')';
execute immediate v_sql;
end loop;
end;
/
SQL> exec rep_1('TEST_REP','SCOTT');
PL/SQL procedure successfully completed.
SQL> select * from test_rep;
T1 T2 T3
---------- ---------- ----------
bbcde bdbce cdtgb
bbbb bytbbe cdbtbgb
1 0
- plsql 开发实战问题一: 如何更新一个表的所有列
- SQLServer中 如何取出一个表的所有列名
- SQLServer中如何取出一个表的所有列名
- SQLServer中 如何取出一个表的所有列名
- 一个循环更新某库所有表所有非主键列的值方法(sql 2005 & mysql)
- 获取一个表的所有列名
- 如何取得一个数据表的所有列名
- sql列出一个表所有列的列名
- SQL Server中 如何取出一个表的所有列名
- plsql 实战题目 一:
- 查询一个表的所有列名的语句
- oracle 如何获取表的主键列名,如何获取表的所有列名
- oracle 如何获取表的主键列名,如何获取表的所有列名 .
- sqlserver 一个表某列更新到另一个表的某列
- PLSQL无法查看所有的表
- Oracle迅速取到一个表的所有列的列名的方法
- PLSQL Developer 自动关联表和表中的列的问题
- 更新表中一个段中的所有的值
- 理解 Javascript 的闭包 (例子举得很好)
- Unity OnTrigger与OnCollision
- VS集成Qt环境搭建
- 模拟微信登陆和获取好友信息
- UML类图图示样例
- plsql 开发实战问题一: 如何更新一个表的所有列
- linux中内存泄漏的检测(四)记录泄漏的大小
- JS中的!=、== 、!==、===的用法和区别。
- 安卓中在代码中设置dialog的样式
- nginx 多网址多端口多项目精简配置-1
- [微积分学习]Day 4.单侧极限
- python
- ASP.NET 自定义服务器控件的使用
- iOS页面间跳转动画效果