SQL》 spool off SQL》 分析 在第 2 行的 SMITH 与安全数字之间缺了逗号 Column Ambiguously Defined 输入 SQL》 @employee_tbl 输出 SQL》 spool employee。lst SQL》 set echo on SQL》 set feedback on SQL》 select p。ssn; name; e。address; e。phone 2 from employee_tbl e; 480 …………………………………………………………Page 481…………………………………………………………… SQL 21 日自学通(V1。0) 翻译人 笨猪 3 payroll_tbl p 4 where e。ssn =p。ssn; select p。ssn; name; e。address; e。phone * ERROR at line 1: ORA…00918: column ambigously defined SQL》 spool off SQL》 分析 在第一行中的 name 列没有定义 表已经被给了别名 e 和 p 根据它的别名可以决定使 用那一个表 SQL mand Not Properly Ended 输入 SQL》 create view emp_tbl as 2 select * from employee_tbl 3 order by name 4 / 输出 order by name * ERROR at line 3: ORA…00933: SQL mand not properly ended SQL》 分析 为什么命令没有正确地结束呢 你知道你可以使用 /来结束 SQL 语句 可以在 CREATE VIEW 语句中是不能使用 ORDER BY 子句的 要用 GROUP BY 来代替 查询处理器要在 ORDER BY 子句之前寻找结束标志 分号或正斜线 ) 因为处理器认为 ORDER BY 不是 CREATE VIEW 的一部分 而由于在 ORDER BY 之前没有结束标志 所以错误返回并指明 是在 ORDER BY 子句所在行 Missing Expression 481 …………………………………………………………Page 482…………………………………………………………… SQL 21 日自学通(V1。0) 翻译人 笨猪 输入 SQL》 @tables。sql 输出 SQL》 spool tables。lst SQL》 set echo on SQL》 set feedback on SQL》 set pagesize 1000 SQL》 select owner|| "。" || table; 2 from sys。dba_tables 3 where owner = "SYSTEM" 4 order by table_name 5 / from sys。dba_tables * ERROR at line 2: ORA…00936: missing expression SQL》 spool off SQL》 分析 注意在第一行的表后边的逗号 因为它 处理机制会认为在 SELECT 语句中还有其它 列 这时它不会去找 FROM 子句 Not Enough Arguments for Function 输入 SQL》 @tblspc。sql 输出 SQL》 spool tblspc。lst SQL》 set echo on SQL》 set feedback on 482 …………………………………………………………Page 483…………………………………………………………… SQL 21 日自学通(V1。0) 翻译人 笨猪 SQL》 set pagesize 1000 SQL》 select substr(tablespace_name;1;15) a; 2 decode(substr(file_name;1;45)) c; bytes 3 from sys。dba_data_files 4 order by tablespace_name; decode(substr(file_name;1;45)) c; bytes * ERROR at line 2: ORA…00938: not enough arguments for function SQL》 spool off SQL》 分析 在 DECODE 函数中没有足够的参数 你需要检查你的解释器看一下它的正确语法 Not Enough Values 输入 SQL》 @ezinsert。sql 输出 SQL》 spool ezinsert。lst SQL》 set echo on SQL》 set feedback on SQL》 insert into employee_tbl values 2 ("303785523"; "SMITH"; "JOHN"; "JAY"; "MALE") 3 / insert into employee_tbl values * ERROR at line 1: ORA…00947: not enough values SQL》 spool off 483 …………………………………………………………Page 484…………………………………………………………… SQL 21 日自学通(V1。0) 翻译人 笨猪 SQL》 分析 列值不存在 你需要执行 DESCRIBE 命令来找到丢失的列 你只可以向你所指定的列 中插入数值 如下例 输入 : SQL》 spool ezinsert。lst SQL》 set echo on SQL》 set feedback on SQL》 insert into employee_tbl (ssn; last_name; first_name; mid_name; sex) 2 values ("303785523"; "SMITH"; "JOHN"; "JAY"; "MALE") 3 / Integrity Constraint Violated……Parent Key Not Found 输入 SQL》 insert into payroll_tbl values 2 ("111111111"; "SMITH"; "JOHN") 3 / 输出 insert into payroll_tbl values * ERROR at line 1: ORA…02291: integrity constraint (employee_cons) violated parent key not found SQL》 分析 这个错误的原因是因为试图向一个表中插入数据 而对应的数据在父表中不存在时出 现 你需要查询父表中是否有正确的数据