CREATE OR REPLACE PROCEDURE "Procedure_AccessStatistic" AS
*
第 2 行出现错误:
ORA-00933: SQL command not properly ended
SP2-0734: 未知的命令开头 "TableNames..." - 忽略了剩余的行。
SP2-0734: 未知的命令开头 "Counts num..." - 忽略了剩余的行。
 SELECT REPLACE(to_char(sysdate,'YYYY-MM-DD'),'-','_') INTO Temp FROM DUAL;
                                                            *
第 2 行出现错误:
ORA-06550: line 2, column 61:
PLS-00201: identifier 'TEMP' must be declared
ORA-06550: line 2, column 66:
PL/SQL: ORA-00904: : invalid identifier
ORA-06550: line 2, column 2:
PL/SQL: SQL Statement ignored
ORA-06550: line 3, column 2:
PLS-00201: identifier 'TABLENAMES' must be declared
ORA-06550: line 3, column 2:
PL/SQL: Statement ignored
ORA-06550: line 4, column 66:
PL/SQL: ORA-00904: "TABLENAMES": invalid identifier
ORA-06550: line 4, column 2:
PL/SQL: SQL Statement ignored
ORA-06550: line 5, column 6:
PLS-00201: identifier 'COUNTS' must be declared
ORA-06550: line 5, column 2:
PL/SQL: Statement ignored

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE Procedure_AccessStatistic iS
     Temp varchar2(20);
     TableNames varchar2(50);
     Counts number;
    BEGIN
     SELECT REPLACE(to_char(sysdate,'YYYY-MM-DD'),'-','_') INTO Temp FROM DUAL;
     TableNames := 'Access_tb_'|| Temp ;
     SELECT nvl(COUNT(*),0) INTO Counts FROM user_tables WHERE table_name = TableNames;
     IF  Counts > 0 THEN
      dbms_output.put_line(TableNames); 
     END IF;
    END Procedure_AccessStatistic;
      

  2.   

    SQL> CREATE OR REPLACE PROCEDURE Procedure_AccessStatistic iS
      2   Temp varchar2(20);
      3   TableNames varchar2(50);
      4   Counts number;
      5  BEGIN
      6   SELECT REPLACE(to_char(sysdate,'YYYY-MM-DD'),'-','_') INTO Temp FROM DUAL;
      7   TableNames := 'Access_tb_'|| Temp ;
      8   SELECT nvl(COUNT(*),0) INTO Counts FROM user_tables WHERE table_name = TableNames;
      9   IF  Counts > 0 THEN
     10    dbms_output.put_line(TableNames); 
     11   END IF;
     12  END Procedure_AccessStatistic;
     13  /Procedure created.
      

  3.   

    我是SQLPlus Worksheet执行的.有区别吗?
      

  4.   

    SQLPlus Worksheet也可以正常执行啊!!!
    报错误吗?
      

  5.   

    CREATE OR REPLACE PROCEDURE tistic AS
      Temp       varchar2(20);
      TableNames varchar2(50);
      Counts     number;
    BEGIN
      SELECT REPLACE(to_char(sysdate, 'YYYY-MM-DD'), '-', '_')
        INTO Temp
        FROM DUAL;
      TableNames := 'Access_tb_' || Temp;
      SELECT COUNT(*)
        INTO Counts
        FROM user_tables
       WHERE table_name = TableNames;
     IF Counts > 0 THEN
        dbms_output.put_line(TableNames);
      END IF;
    END;这样就可以了!!