八宝书库 > 文学其他电子书 > SQL 21日自学通(V3.0)(PDF格式) >

第90部分

SQL 21日自学通(V3.0)(PDF格式)-第90部分

小说: SQL 21日自学通(V3.0)(PDF格式) 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






是在 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 命令来长宽表的列宽 



TNS:listener   Could   Not   Resolve   SID   Given   in   Connect 



Descriptor 



输入 



    SQLDBA》 connect rplew/xxxx@database1 



输出 



    ORA…12505: TNS:listener could not resolve SID given in connect descriptor 



    SQLDBA》 disconnect 



    Disconnected。 



    SQLDBA》 



分析 



    在 ORACLE 数据库中这个错误很常见    listener           在请求客户与远程服务通讯时产生了 



错误    这里是你试图连接数据库             不论是数据库名字错误还是 LISTENER              当掉都是有可能 



的  你检查一个数据库的名字              然后再输入一次         如有必要  将这个问题告知数据库管理 



员 



Insufficient Privileges During Grants 



输入 



    SQL》 grant select on people_tbl to ron; 



输出 



    grant select on people_tbl to ron 



                                                                * 



                                                                            486 


…………………………………………………………Page 487……………………………………………………………

SQL 21  日自学通(V1。0)                                               翻译人    笨猪 



    ERROR at line 1: 



    ORA…01749: you may not GRANT/REVOKE privileges to/from yourself 



    SQL》 



输入 



    SQL》 grant select on demo。employee to ron; 



输出 



    grant select on demo。employee to ron 



                                              * 



    ERROR at line 1: 



    ORA…01031: insufficient privileges 



    SQL》 



   这个错误出现在当你试图授予其它的用户表权限而你没有这么做的权利时出现  你必 



需有表授权权限才可以  在  Oracle         中你的权限选项是管理员选项  这就是说你有将指定的 



权限授予其它用户的能力  请检查你的解释器以找到特定的授权选项 



Escape Character in Your Statement……Invalid Character 



    当你在调试 SQL  语句时不能使用脱字符              这种情况在你输入了 SQL  语句到缓冲区或 



文件中以后使用退格键时产生              有时退格键会在你的语句中输入不合法的字符                    这要根据 



你的具体的键盘情况而定            尽管你看不到这些字符 



Cannot Create Operating System File 



    这个错误的产生有好几个原因             最常见的原因是磁盘满了或文件系统的许可权不正确 



如果磁盘满了  你必须删除一些不需要的文件  如果是权限不正确                           请正确地设置它们 

这个错误更可能是操作系统的错误  所以你需要征询系统管理员的建议 



mon Logical Mistakes 



    到现在我们已经讨论了全部的在 SQL 语句中的实际上的错误信息                         它们中的大多数很 



明显  也很容易断定         下边的错误更可能是逻辑错误  它们在稍后产生问题 — — 不是马上 



                                                                        487 


…………………………………………………………Page 488……………………………………………………………

SQL 21  日自学通(V1。0)                                                  翻译人   笨猪 



Using Reserved Words in Your SQL statement 



输入 



    SQL》 select sysdate DATE  from dual; 



输出 



    select sysdate DATE 



                                  * 



    ERROR at line 1: 



    ORA…00923: FROM keyword not found where expected 



分析 



    在这个例子中查询处理器并不会处理 DATE 字 因为它是一个保留字 由于在SYSDATE 



后边没有逗号  所以处理认为下一个子句应该是 FROM 



输入 



    SQL》 select sysdate 〃DATE〃 



        2    from  dual; 



输出 



      DATE 



      15…MAY…97 



分析 



    注意在这里是如何解决保留字问题的— — 用双引号将它括起来                           它可以让你将 DATE 



作为别名字符串处理 



注   你应该检查你的数据库文档中的保留字列表                    因为不同的解释器中的保留字是不同的 



    当对一个列使用别名时你可能使用双引号也可能不使用  在下边的例子中你就不必使 



用双引号      因为 TODAY 不是一个保留字  所以应该检查你的解释器再进行判断 



输入 



    SQL》 select sysdate TODAY 



        2    from  dual; 



输出 



      TODAY 



      15…MAY…97 



                                            

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的