Oracle 查询以查找表中的空列数以及列的名称
我在尝试使用define命令时出错,否则代码工作正常。请让我知道如何使用define命令使用此代码。定义b_表='&请输入表名'Oracle 查询以查找表中的空列数以及列的名称,oracle,plsql,Oracle,Plsql,我在尝试使用define命令时出错,否则代码工作正常。请让我知道如何使用define命令使用此代码。定义b_表='&请输入表名' declare v_count number; cursor c2 is select Column_name from all_tab_columns where
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的字符串中计算,它会出错。我们需要将其从字符串中删除,以便对其进行计算。