我要更新多个表中的数据,后缀包含“_org_path”或“_path”的字段里的值只要是‘/000000/460000/460500/460400’都改为'/000000/460000/460400'
因为表有十多个,有的表里的字段也不止一个,一个个改挺麻烦的,不知道能不能写个存储过程来实现

解决方案 »

  1.   

    select 'update '||t.TABLE_NAME||' set '||t.COLUMN_NAME||'=replace('||t.COLUMN_NAME||',''/000000/460000/460500/460400'',''/000000/460000/460400'')
      where '||t.COLUMN_NAME||' like ''%/000000/460000/460500/460400'';' from user_tab_columns t 
    where t.COLUMN_NAME like '%_PATH'
    and t.TABLE_NAME in ('要处理的表名列表');
    你用这个语句生成sql然后执行就行了。
    专门写个存储过程麻烦。
      

  2.   

    如果会动态SQL就会很方便,不会的话,照着1楼的方式 写下吧