最近oracle开发中遇到的一些问题及解决办法(三)待续

0)COUNT(*),COUNT(1),COUNT(ROWID)三者是一样的,只是效率不同而已.

 

开发中执行存储过程时,有时会报以下两种错误:

1.ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小,

2.插入的值对于列过大.

对于1是因为表中列的长度定义的过小,比如char(4),插入的值如果超过4个长度的话就会报1.

对于2正好与1相饭.  3.ora-00001:   违反唯一约束条件  

  可能是该表的主键唯一性出错,即:主键中已有某个键值,又插入一个同样的值,这个可以察看相应的表的主键约束.

4.如何永久更改数据库时间日期格式

在注册表[hkey_local_machine/software/oracle/home0]     里面加     nls_date_format     值设为     yyyy-mm-dd   hh24:mi:ss

5.select owner,table_name,tablespace_name,blocks,last_analyzed

from all_tables order by 1,2;

order by 1,2是什么意思?

根据第一列和第二列排序 相当于 order by owner,table_name

先看一下例子     SQL>   select   *   from   test_tab   order   by   1;         COL_A                       COL_B     ----------   ----------     A                                       1     A                                       2     B                                       2     B                                       3     C                                       4     D                                       1     D                                     12     D                                   121     D                                     12         9   rows   selected         SQL>   select   *   from   test_tab   order   by   2;         COL_A                       COL_B     ----------   ----------     A                                       1     D                                       1     A                                       2     B                                       2     B                                       3     C                                       4     D                                     12     D                                     12     D                                   121         9   rows   selected     SQL>   select   *   from   test_tab   order   by   3;         select   *   from   test_tab   order   by   3         ORA-01785:   ORDER   BY   项必须是   SELECT-list   表达式的数目             以上看来:1表示第一个栏位,2表示第二栏位   依此类推     当表中只有2个栏位时,ORDER   BY   3就会出错

4.更新表(如果记录已存在则更新,不存在则插入)

MERGE INTO course c USING (SELECT course_name, period, course_hours FROM course_updates) cu ON (c.course_name = cu.course_name AND c.period = cu.period) WHEN MATCHED THEN UPDATE SET c.course_hours = cu.course_hours WHEN NOT MATCHED THEN INSERT (c.course_name, c.period, c.course_hours) VALUES (cu.course_name, cu.period, cu.course_hours);

5. Oracle的 DBMS_OUTPUT.put 与 DBMS_OUTPUT.put_line 的区别?

declare begin DBMS_OUTPUT.put( "put======= ");--不换行 DBMS_OUTPUT.put( "put======= ");--不换行 DBMS_OUTPUT.put_line( "putline====== ");--换行 DBMS_OUTPUT.put_line( "putline====== ");--换行 DBMS_OUTPUT.put_line( "putline====== ");--换行 end; 结果: put=======put=======putline====== putline====== putline======

在SQL Plus中:

SQL>set serveroutput on

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值