如果我想批量修改数据库中所有以dw_fact开头的表里面的一个字段(state)的数据。(dw_fact表里面的那个字段名称都是一样的)。
该如何实现呢?谢谢!!!!!!!!!

解决方案 »

  1.   

    写个存储过程,里面用游标执行动态sql来更新所有符合条件的表。
      

  2.   

    CREATE OR REPLACE PROCEDURE update_data(val varchar2)
    IS
      CURSOR myCursor IS SELECT table_name FROM user_tables WHERE table_name LIKE 'DW_FACT%';
      strSQL user_tables.table_name%type;
    BEGIN
        OPEN myCursor;
        FETCH myCursor INTO strSQL;    
        WHILE myCursor%FOUND LOOP
            EXECUTE IMMEDIATE 'UPDATE ' || strSQL || ' SET state = ''' || val || ''' WHERE rownum = 1'; ---自己修改相应的where条件即可   
            FETCH myCursor INTO strSQL;    
        END LOOP;
        CLOSE myCursor;
    END;
    /
      

  3.   

    俺基础太差啦。
    更新后面不用加条件。
    只是吧  state修改为1  怎么弄呢?我调试了下。好像出错哦。