按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
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》
分析
这个错误的原因是因为试图向一个表中插入数据 而对应的数据在父表中不存在时出
现 你需要查询父表中是否有正确的数据 如果没有 你必须在向子表中插入数据之前先
向它的父表中插入数据
484
…………………………………………………………Page 485……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
Oracle Not Available
输入
(sun_su3)/home》 sqlplus
SQL*Plus: Release 3。2。3。0。0 Production on Sat May 10 11:19:50 1997
Copyright (c) Oracle Corporation 1979; 1994。 All rights reserved。
Enter user…name: rplew
Enter password:
输出
ERROR: ORA…01034: ORACLE not available
ORA…07318: smsget: open error when opening sgadef。dbf file。
分析
你没有得到 SQL*PLUS 的提示 数据库可能当掉了 检查数据库的状态 同样 如果
你在访问多个数据库的话你要确认你的连接是正确的
Inserted Value Too Large for Column
输入
SQL》 @ezinsert。sql
输出
SQL》 spool ezinsert。lst
SQL》 set echo on
SQL》 set feedback on
SQL》 insert into office_tbl values
2 ('303785523'; 'SMITH'; 'OFFICE OF THE STATE OF INDIANA; ADJUTANT
GENERAL')
3 /
insert into office_tbl values
*
ERROR at line 1:
485
…………………………………………………………Page 486……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
ORA…01401: inserted value too large for column
SQL》 spool off
SQL》
分析
要插入的数值对于列来说太大 在表中使用 DESCRIBE 命令来更正数据的长度 如
有必要 你可以执行 ALTER TABLE 命令来长宽表的列宽