oracle中将一个用户的所有表字段为char改为varchar
2008-02-21 10:27
531 查看
create or replace procedure modifychartovarchar is --
cursor c1 is
select t.TABLE_NAME, t.COLUMN_NAME, t.DATA_LENGTH
from all_tab_columns t
where t.OWNER = 'LANDUSER' and t.DATA_TYPE = 'CHAR' and
t.TABLE_NAME in (select at.table_name from all_tables at);
PTABLE_NAME varchar2(100);
pCOLUMN_NAME varchar2(100);
sqlstr varchar2(200);
Dl integer;
begin
--by 闫磊 Email:Landgis@126.com,yanleigis@21cn.com 2006.10.11
open c1;
fetch c1
into PTABLE_NAME, pCOLUMN_NAME, Dl;
while c1%found loop
sqlstr := 'alter table ' || PTABLE_NAME || ' modify ' || pCOLUMN_NAME ||
' varchar2(' || Dl || ')';
dbms_output.put_line(sqlstr);
execute immediate sqlstr;
sqlstr := 'update ' || PTABLE_NAME || ' set ' || pCOLUMN_NAME ||
'=trim(' || pCOLUMN_NAME || ')';
dbms_output.put_line(sqlstr);
execute immediate sqlstr;
fetch c1
into PTABLE_NAME, pCOLUMN_NAME, Dl;
end loop;
commit;
close c1;
end;
cursor c1 is
select t.TABLE_NAME, t.COLUMN_NAME, t.DATA_LENGTH
from all_tab_columns t
where t.OWNER = 'LANDUSER' and t.DATA_TYPE = 'CHAR' and
t.TABLE_NAME in (select at.table_name from all_tables at);
PTABLE_NAME varchar2(100);
pCOLUMN_NAME varchar2(100);
sqlstr varchar2(200);
Dl integer;
begin
--by 闫磊 Email:Landgis@126.com,yanleigis@21cn.com 2006.10.11
open c1;
fetch c1
into PTABLE_NAME, pCOLUMN_NAME, Dl;
while c1%found loop
sqlstr := 'alter table ' || PTABLE_NAME || ' modify ' || pCOLUMN_NAME ||
' varchar2(' || Dl || ')';
dbms_output.put_line(sqlstr);
execute immediate sqlstr;
sqlstr := 'update ' || PTABLE_NAME || ' set ' || pCOLUMN_NAME ||
'=trim(' || pCOLUMN_NAME || ')';
dbms_output.put_line(sqlstr);
execute immediate sqlstr;
fetch c1
into PTABLE_NAME, pCOLUMN_NAME, Dl;
end loop;
commit;
close c1;
end;
相关文章推荐
- 修改所有用户表的字段 , 只替换char varchar nchar nvarchar 类型
- 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本
- 写一个触发器,把用户插入或修改的所有字段都改为大写
- 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本
- oracle sql查询 当前用户的所有表的字段信息
- 查一个表中某个字段相同的其他所有用户信息
- Oracle中将一个字段拆分成多个行记录
- oracle将一个用户下的所有表复制到以一个用户下
- ORACLE 删除一个用户的所有表
- sqlserver中将查询出来的一个字段的所有值用逗号进行拼接
- sqlserver中将某数据库下的所有表字段名称为小写的改为大写
- oracle 中查询一个表的所有字段名以及属性的sql语句应该怎么写?
- Oracle 如何删除掉一个用户下的所有对象
- SQL学习---将所有的char,varchar改为nchar,nvarchar
- sqlserver中将某数据库下的所有表字段名称为小写的改为大写
- Oracle中将查询出的多条记录的某个字段拼接成一个字符串的方法
- Oracle 把一个用户所有表的读权限授予另一个用户
- oracle中将自建用户下的所有表删除
- Oracle中,如何删除一个用户下的所有表
- oracle sql语句如何检索出一个表的所有字段