大家好,请帮小妹解决一下,在OTN的一个英文文档中,有如下程序:CREATE TABLE employees2 AS SELECT last_name FROM employees;
<<main>>
DECLARE
last_name VARCHAR2(10) := 'King';
v_last_name VARCHAR2(10) := 'King';
BEGIN
-- deletes everyone, because both LAST_NAMEs refer to the column
DELETE FROM employees2 WHERE last_name = last_name;
DBMS_OUTPUT.PUT_LINE('Deleted ' || SQL%ROWCOUNT || ' rows.');
ROLLBACK;
-- OK, column and variable have different names
DELETE FROM employees2 WHERE last_name = v_last_name;
DBMS_OUTPUT.PUT_LINE('Deleted ' || SQL%ROWCOUNT || ' rows.');
ROLLBACK;
-- OK, block name specifies that 2nd last_name is a variable
DELETE FROM employees2 WHERE last_name = main.last_name;
DBMS_OUTPUT.PUT_LINE('Deleted ' || SQL%ROWCOUNT || ' rows.');
ROLLBACK;
END;
/
我在PL/SQL DEVELOPER 7.几版本中,运行错误如下.:ORA-06550: 第 7 行, 第 42 列: 
PL/SQL: ORA-00904: "V_LAST_NAME": 标识符无效
ORA-06550: 第 7 行, 第 1 列: 
PL/SQL: SQL Statement ignored
ORA-06550: 第 11 行, 第 42 列: 
PL/SQL: ORA-00904: "MAIN"."LAST_NAME": 标识符无效
ORA-06550: 第 11 行, 第 1 列: 
PL/SQL: SQL Statement ignored
请问一下,到底是什么原因呢?

解决方案 »

  1.   

    main.last_name是什么意思?
    不能这么用吧
    其他的没问题
    我拷贝了测试通过
    Deleted 6 rows.
    Deleted 6 rows.
      

  2.   

    last_name = last_name;和last_name = main.last_name;是不是这两句有问题,楼主自查一下
      

  3.   

    我觉的#2楼说的没错,好像没有main.last_name这么用的
      

  4.   

    DELETE FROM employees2 WHERE last_name = main.last_name; 
    这句有问题,
    你使用#.名 无非是table的列,或者是变量的列,但是你这里并没有声明
    所以他当然会报错。
    请检查一下OTN文档的前文