Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
Oracle 查询以查找表中的空列数以及列的名称_Oracle_Plsql - Fatal编程技术网

Oracle 查询以查找表中的空列数以及列的名称

Oracle 查询以查找表中的空列数以及列的名称,oracle,plsql,Oracle,Plsql,我在尝试使用define命令时出错,否则代码工作正常。请让我知道如何使用define命令使用此代码。定义b_表='&请输入表名' declare v_count number; cursor c2 is select Column_name from all_tab_columns where

我在尝试使用define命令时出错,否则代码工作正常。请让我知道如何使用define命令使用此代码。定义b_表='&请输入表名'

                    declare
                    v_count number;
                    cursor c2 is select Column_name 
                    from all_tab_columns
                     where table_name= '&b_table';

                    begin
                    for r1 in c2 loop
                    dbms_output.put_line(r1.column_name);
                    select count(r1.column_name) into v_count
                    from HR.'&b_table';
                    if v_count =0 then
                    dbms_output.put_line(v_count);
                    end if;
                    end loop;
                    end;
               old   5:  where table_name= '&b_table';
new   5:  where table_name= ' enter the table name';
old  11: from HR.'&b_table';
new  11: from HR.' enter the table name';
from HR.' enter the table name';
        *
ERROR at line 11:
ORA-06550: line 11, column 9:
PL/SQL: ORA-00903: invalid table name
ORA-06550: line 10, column 1:
PL/SQL: SQL Statement ignored
试试这个

    SET serveroutput ON;
    DECLARE
      v_count      NUMBER;
      v_table_name VARCHAR2(200);
      CURSOR c2(v_table VARCHAR2)
      IS
        SELECT Column_name FROM all_tab_columns WHERE table_name= v_table;
    BEGIN
      v_table_name := :table_name;
      FOR r1 IN c2(v_table_name)
      LOOP
        dbms_output.put_line(r1.column_name);
        EXECUTE immediate('SELECT COUNT('||r1.column_name||')  FROM HR'||'.'||v_table_name) INTO v_count;
        IF v_count =0 THEN
          dbms_output.put_line(v_count);
        END IF;
      END LOOP;
    END;

我错过的第一行设置了serveroutput;定义b_表='&请输入表名';请使用“编辑”输入所述行,并格式化codemind,将其格式化为aamir?重复问题的可能副本。看见另外,它也不是关于mysql的。说bind_variable table_name不起作用declared@Optimuskck-立即对v_count执行“某些动态查询”;-这是单个结果的正确语法。IDE中的绑定变量似乎没有提示。您必须将其声明为常量,或者将其更改为可提示为v_table_name:=&b_table;顺便说一句,因为这是重复的:我还注意到r1.column_name不会在EXECUTE IMMEDIATE的字符串中计算,它会出错。我们需要将其从字符串中删除,以便对其进行计算。