日期:2014-05-17  浏览次数:21008 次

关于更新多个表的同一字段的问题
各位好,我也是接触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"如果是双引号的话改为两个单引号。
------解决方案--------------------
引用:
各位好,我也是接触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&n