首页 > 数据库技术 > 详细

Oracle坑爹入门踩坑篇

时间:2015-11-27 17:17:54      阅读:262      评论:0      收藏:0      [点我收藏+]

这是我第一次实际工作中适用oracle,之前一直是用sql server,两种sql的语法差别很大,以前在用t-sql的时候经常不写分号结尾,在用pl/sql的时候不写就出问题了。

我觉着我踩的这些坑,第一次用oracle的园友们应该也有不少回踩到,这里贴出这些坑以及常用的一些函数,让大家借鉴一下。

--dual表是oracle的伪表
--直接在查询结果中修改表数据,加上rowid就好了
select rowid,t.* from table t ;
--拼接字符串,用||而不是+
select a||b from dual;
--数字转字符串
select to_char(8) from dual;
--字符串转数字
select to_number(8) from dual;
--字符串转日期
select  to_date(2015/11/15 16:37:48,yyyy-mm-dd hh24:mi:ss) from dual;
--oracle有包的概念,里面放着一堆的函数跟存储过程,都是可以用包点出来的,跟类差不多,就是个容器。
--如果你创建了包体,执行完毕后,是还需要编译的。
--oracle 里面 := 是 赋值的意思
--如何调试存储过程
--在左边菜单栏打开你的procedures 文件夹,找到要调试的存储过程,右键,选择"测试"(如果这个存储过程有一个红色的叉叉,就表示编译没通过,右键,点“编辑”可以看到报错的地方),就会进入到测试窗口,在最下面有变量列表,在"值"这一列输入存储过程的参数,按"F9"就可以开始调试。在这个测试窗口的左上角,有"单步进入","单步跳过"的按钮,相信你会用的了。
--loop语句,要嵌套在begin end 里面,不然用不了。呵呵
--给变量赋值,并打印
--赋值是没问题的,但是打印要放在begin end 里面,声明不能放到里面。真是呵呵了
--1===》
declare x int := 55;
begin
dbms_output.put_line(x);
end;


--2====》
declare x int ;
begin
x:= 666;
dbms_output.put_line(x);
end;
--if else 语句的小demo,不要忘记分号!
declare
  v1 number := 1;
  v2 number := 2;
  vr varchar2(20);
begin
  if v1 < v2 then
    vr := yes;
  else
    vr := no;
  end if;
  dbms_output.put_line(vr);
end;
--各种循环的形式小demo
----------loop exit end ----------------
declare
  v1 number := 0;
BEGIN
  loop
    if v1 > 1000 then
      exit;
    end if;
    v1 := v1 + 1;
    DBMS_OUTPUT.PUT_LINE(V1);
  end loop;
END;
----------loop exit when end----------------
declare
  v1 number := 0;
BEGIN
  loop
    exit when v1 > 5;
    v1 := v1 + 1;
    dbms_output.put_line(v1);
  end loop;
END;
---------while loop end--------------------------
declare
  v1 number := 0;
begin
  while v1 <= 100 loop
    v1 := v1 + 1;
    dbms_output.put_line(v1);
  end loop;
end;
 
---------for in loop end---------------
--||为oracle字符串连接符
begin
  for v_rlt in -3 .. 3 loop
    dbms_output.put_line(v_rlt =  || v_rlt);
  end loop;
  dbms_output.put_line(FOR循环已经结束!);
end;
--使用游标注意点:
--使用游标插入数据时,如果报错了,只能把sql抓出来运行才看得到异常信息,在游标里面什么错误都不会报,直接就运行完了,呵呵。
同义词:
 
相当于alias(别名),比如把user1.table1在user2中建一个同义词table1 
create synonym table1 for user1.table1; 
这样当你在user2中查select * from table1时就相当于查select * from user1.table1; 
优点自己总结吧。 
 
例如:
在oracle中对用户的管理是使用权限的方式来管理的,也就是说,如果我们想使用数据库,我们就必须得有权限,但是如果是别人将权限授予了我们,我们也是能对数据库进行操作的,但是我们必须要已授权的表的名称前键入该表所有者的名称,所以这就是比较麻烦的,遇到这种情况,我们该怎么办呢?创建个同义词吧!这样我们就可以直接使用同义词来使用表了。
database links
在pl
/sql左侧菜单栏,有database links文件夹 建立dblink,可以直接在当前账户下访问另一个数据库的表
如何修改存储过程:

在oracle中不需要用alter关键字来修改原存储过程,直接把
create or replace procedure ... 再执行一次就可以完成修改

oracle调试注意点:

技术分享

如上图,字符串的,那个29,千万不要手贱去加个单引号,真是蛋都碎了。

 

暂时就这些了。

技术分享

Oracle坑爹入门踩坑篇

原文:http://www.cnblogs.com/xushining/p/5001006.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!