关于更新多个表的同一字段的有关问题
关于更新多个表的同一字段的问题
各位好,我也是接触oracle不久,现在有一个问题,还想请教各位大大
现在我在一个用户下 有许多表 比如 table_A, table_B, table_C
然后这些表中都有一个字段 比如 ceritype char(1) 这个字段表示的含义是证件类型
比如 ceritype = '0' 表示身份证
ceritype = '1' 表示户口本
ceritype = '2' 表示外国护照
现在我想把所有这些表中的证件类型全部变为 ‘c’ 表示 位置类型
这是我在PL\SQL中执行的,但是报错了
declare
--类型定义
cursor c_type
is
select u.table_name, t.column_name from user_all_tables u, user_tab_cols t
where u.table_name = t.table_name
and t.column_name like '%CERITYPE%'
order by u.table_name,t.column_name;
--定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
c_row c_type%rowtype;
sSql varchar(1000);
begin
for c_row in c_type loop
sSql := 'update ' || c_row.table_name || ' set ' || c_row.column_name || ' = "c" ' ;
execute immediate sSql;
end loop;
end;
请问是哪里出错了吗?
------解决方案--------------------
提示什么错误。
"c"如果是双引号的话改为两个单引号。
------解决方案--------------------
实际应用中是严格这样使用的。。而且建议你字段名不要like。如果有字段名类似的会出问题的。。
而且更新前要严格控制更新范围
------解决方案--------------------
sSql := 'update '
------解决方案--------------------
c_row.table_name
------解决方案--------------------
' set '
------解决方案--------------------
c_row.column_name
------解决方案--------------------
' = "c" ' ;
------解决方案--------------------
最后的c应该是两个单引号,不是双引号
各位好,我也是接触oracle不久,现在有一个问题,还想请教各位大大
现在我在一个用户下 有许多表 比如 table_A, table_B, table_C
然后这些表中都有一个字段 比如 ceritype char(1) 这个字段表示的含义是证件类型
比如 ceritype = '0' 表示身份证
ceritype = '1' 表示户口本
ceritype = '2' 表示外国护照
现在我想把所有这些表中的证件类型全部变为 ‘c’ 表示 位置类型
这是我在PL\SQL中执行的,但是报错了
declare
--类型定义
cursor c_type
is
select u.table_name, t.column_name from user_all_tables u, user_tab_cols t
where u.table_name = t.table_name
and t.column_name like '%CERITYPE%'
order by u.table_name,t.column_name;
--定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
c_row c_type%rowtype;
sSql varchar(1000);
begin
for c_row in c_type loop
sSql := 'update ' || c_row.table_name || ' set ' || c_row.column_name || ' = "c" ' ;
execute immediate sSql;
end loop;
end;
请问是哪里出错了吗?
------解决方案--------------------
提示什么错误。
"c"如果是双引号的话改为两个单引号。
------解决方案--------------------
实际应用中是严格这样使用的。。而且建议你字段名不要like。如果有字段名类似的会出问题的。。
而且更新前要严格控制更新范围
------解决方案--------------------
sSql := 'update '
------解决方案--------------------
c_row.table_name
------解决方案--------------------
' set '
------解决方案--------------------
c_row.column_name
------解决方案--------------------
' = "c" ' ;
------解决方案--------------------
最后的c应该是两个单引号,不是双引号