设为首页 收藏本站
查看: 499|回复: 0

[经验分享] Oracle 高级查询、事物、过程及函数

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-1-10 08:47:16 | 显示全部楼层 |阅读模式
一、Sql函数

      1、数值函数(输入参数和返回值都是数值型,多数函数精确到38位)



--多少次方
select power(3,2) from dual;
--开方
select sqrt(3) from dual;
--绝对值
select ABS(-12) from dual;
--向上取值
select ceil(5.3)from dual;
--向下取值
select floor (5.3)from dual;
--四舍五入
select round (1.235,2) from dual;
--截取
select trunc (152.3365) from dual;
--判断正负
select sign (-12) from dual;

      2、字符函数(输入参数是字符型,返回值是数值型和字符型)

          lower(char)  将字符串转换为小写格式

          upper(char)  将字符串转换为大写格式

          length(char)返回字符串的长度

          ltrim(char [,set]) 去掉set左端的字符串



--截取字符
select substr('hehe',3,2) from dual;
--合并
select concat('h','e') from dual;
--查找位置
select instr('he','h') from dual;
--替换
select replace('he','e','h') from dual;
--去空格
select ltrim('this','th') from dual

      3、转换函数(将数值从一种数据类型装换为另一种数据类型)

--to_number()转换为数字
select to_number('2000.02','999999D99') from dual;
--to_char()将日期型转变为字符串
select to_char(sysdate,'yyyy-mm-dd') from dual;
--to_date()转换为date类型
select to_date('2013-04-05','yyyy-mm-dd') from dual;   
    nvl(expr1,expr2) 将null转换为实际值

    nvl2(expr1,expr2,expr3) 如果expr1不为null 这返回expr2,否则返回expr3

二、查询

    1、多表查询

      union :返回不重复行(补)

      union all:返回所有行,包括重复行(并)

      intersect :两个查询都检索到的行(交)

      minus:返回第一个查询检索到的行减去第二个查询检索到的行所剩余的行(差)

   2、连接查询

--内连接
select dept.deptno,dname,enamefrom scott.dept,scott.emp where dept.deptno=emp.deptno;
--自连接
select manager.ename from scott.emp manager,scott.emp worker where manager.empno=work.mgr and worker.ename='SMITH';
三、事物处理

      commit:提交事务

update scptt.emp set sal=2000 where ename='MARY';
commit;
select sal from scott.emp where ename='MARY';
      rollback:回滚事务

update scptt.emp set sal=3000 where ename='MARY';
rollback;
select sal from scott.emp where ename='MARY';
      savepoint a:设置保存点 整个事务部回滚

      rollack to a :取消部分事务

      rollack :取消全部事务

    1、事物的属性

        原子性(A)、一致性(C)、隔离性(I)、持久性(D)

四、过程和函数

      1、存储过程(procedure)


create or replace procedure proc_name(v_empno number)
as
--内部变量
v_name varchar2(30);
begin
       select scott.emp.ename into v_name from scott.emp where empno=v_empno;
       dbms_output.put_line('员工信息'|| v_name);
end;
--调用存储过程
begin
  proc_name(7369);
end;
--删除存储过程
drop procedure proc_name


      2、函数


--函数
create or replace function func_name
return varchar2
as
begin
    return 'xxxx';  
end;
--调用函数
select func_name() from dual;
--删除函数
drop function func_name




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-13758-1-1.html 上篇帖子: oracle 查询周的第一天日期 下篇帖子: Oracle Purchasing QUESTIONS AND ANSWERS Oracle
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表