友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

SQL 21日自学通(V3.0)(PDF格式)-第112章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 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 命令来长宽表的列宽
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!