Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在对表的列执行更新活动后,如何检查数据库中的所有表是否都已修改?_Sql_Oracle_Plsql - Fatal编程技术网

Sql 在对表的列执行更新活动后,如何检查数据库中的所有表是否都已修改?

Sql 在对表的列执行更新活动后,如何检查数据库中的所有表是否都已修改?,sql,oracle,plsql,Sql,Oracle,Plsql,我必须用值DD更新所有列名为“%DIV%”的表,不管它是MG还是MG,我已经为它编写了脚本,但我不知道如何在执行活动后验证是否所有表的列都更新为值DD。我已经写了这个查询 SELECT 'SELECT '||OWNER||'.'||TABLE_NAME||', '||COLUMN_NAME||' FROM '||OWNER||'.'||TABLE_NAME||' WHERE '||COLUMN_NAME||' = ''MG'' ;' FROM RADHA.CHANGE_TABLE WHERE V

我必须用值DD更新所有列名为“%DIV%”的表,不管它是MG还是MG,我已经为它编写了脚本,但我不知道如何在执行活动后验证是否所有表的列都更新为值DD。我已经写了这个查询

SELECT 'SELECT '||OWNER||'.'||TABLE_NAME||', '||COLUMN_NAME||' FROM '||OWNER||'.'||TABLE_NAME||' WHERE '||COLUMN_NAME||' = ''MG'' ;'
FROM RADHA.CHANGE_TABLE
WHERE VALID_FLAG='Y'
我打算做一个像这样的桌子结构

OWNER  TABLE_NAME  PREV_COUNT  
PREV_COUNT将保存列值为MG的行的计数,在执行活动后,我将使用以下查询验证相应的行是否已更新为DD

SELECT 'SELECT '||OWNER||'.'||TABLE_NAME||', '||COLUMN_NAME||' FROM '||OWNER||'.'||TABLE_NAME||' WHERE '||COLUMN_NAME||' = ''DD'' ;' FROM RADHA.CHANGE_TABLE WHERE VALID_FLAG='Y'
这个查询的输出将进入表中

 OWNER  TABLE_NAME  NEW_COUNT

但是我无法从Select查询中获取记录,因为它是写入Select查询中的字符串,但我希望结果集能够将记录插入到上面提到的表中,请指导如何进一步处理我没有您的表,但是-基于Scott的示例模式,下面是一个脚本,它在所有表中搜索名为
JOB
(第8行)的列,并检查其中有多少列的值看起来像(提示:
like
CLERK
(第12行)

看看它是如何工作的,调整它使它适合你

SQL> DECLARE
  2    l_str VARCHAR2(500);
  3    l_cnt NUMBER := 0;
  4  BEGIN
  5    FOR cur_r IN (SELECT u.table_name, u.column_name
  6                  FROM user_tab_columns u, user_tables t
  7                  WHERE u.table_name = t.table_name
  8                    AND u.column_name = 'JOB'
  9                                                              )
 10    LOOP
 11      l_str := 'SELECT COUNT(*) FROM ' || cur_r.table_name ||
 12               ' WHERE ' || cur_r.column_name || ' like (''%CLERK%'')';
 13
 14      EXECUTE IMMEDIATE (l_str) INTO l_cnt;
 15
 16      IF l_cnt > 0 THEN
 17         dbms_output.put_line(l_cnt ||' : ' || cur_r.table_name);
 18      END IF;
 19    END LOOP;
 20  END;
 21  /
4 : EMP        --> there are 4 CLERKs in the EMP table

PL/SQL procedure successfully completed.

SQL>

您需要使用。我只想通过表来验证我的数据,因为大约有1000个表,这就是我提到表结构的原因。好的。游标的
select
将在架构中包含该列的所有表中运行。是的,但是如何将数据插入到我的表结构所有者列\u NAME PREV\u count而不是(或连同)DBMS\u输出,请使用insert into OUR table(第17行)。详细说明什么?如何键入insert语句<代码>将值(用户'JOB',l_cnt')插入您的_表(所有者、列名称、上一个计数)