热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle基础教程知识点总结

1.dba,sysdba,sysoper区别dba是一种角色;角色可以包含系统权限,对象权限和角色;dba不包含sysdba,sysoper权限;sysdba,

1. dba,sysdba,sysoper 区别 dba 是一种角色;角色可以包含系统权限,对象权限和角色;dba不包含sysdba,sysoper权限; sysdba ,

1. dba,sysdba,sysoper 区别

dba 是一种角色;角色可以包含系统权限,对象权限和角色;dba不包含sysdba,sysoper权限;

sysdba ,sysoper 是两种系统权限;这两种权限比较大最好以sys,system登陆管理,不要赋给普通用户;

2. Oracle的public

public 可以理解为所有用户的集合;

grant dba to public ; 相当于所有用户都是dba;


---plsql编程:

plsql可以编写:过程,函数,触发器;

过程,函数,触发器在oracle中;

plsql是非常强大的数据库过程语言;

过程,函数可以在java中调用;

plsql优点:

提高性能;(传统的jdbc连库,执行sql,编译成数据库语言,返回值,关闭连接,多次调用多次编译,写成过程只编译一次,对调随用;)

模块化设计思想;(分页过程,订单的过程,转账的过程)

减少网络传输量;(本来需要传个大sql,现在传个过程名字就行了)

安全性高;(oracle数据库的保护,字段什么的都在库里面)

plsql缺点:

移植性不好;(oracle语言写的过程,这些过程在DB2上是没法使用的)


1.创建一个存储过程

create or replace procedure p1 is

begin

insert into mytable values('gao','123456');

end;

/

2.存储过程编程报错,查看错误:

show errors;

3.如何执行存储过程

exec p1;

------编写规范

1.单行注释: --

多行注释:/*...*/ (java中一样)

2.标示符号的命名规范:

变量:v_ (v_val)

常量:c- (c_val)

游标:-cursor (emp_cursor)

例外:e_ (e_error)

3.块结构示意图

pl/sql 块有三部分组成:定义部分,执行部分,例外部分

declear /* 定义部分-定义常量,变量,例外,复杂数据类型*/

begin /* 执行部分-要执行的pl/sql语句和sql语句*/ 必须有

exception /*例外处理部分-处理运行的各种错误*/可选

public static void main(Sting args){

int a; //定义部分

try{

a++; //执行部分

}catch(Exception e){ //异常处理部分

}

}

--只包含执行快部分的块

set serveroutput on --打开输出服务;

begin

dbms_output.put_line('hello,World!');

end;

/

--包含声明和执行部分的pl/sql块;

declare

v_passwd varchar2(10);

v_name varchar2(20);

begin

select passwd ,name into v_passwd ,v_name from mytable where name=&name; --地址符表示从控制台接受变量;

dbms_output.put_line(v_name||'的密码为:'||v_passwd);

end;

/

--包含声明,执行和 异常部分的pl/sql块

declare

v_passwd varchar2(10);

v_name varchar2(20);

begin

select passwd ,name into v_passwd ,v_name from mytable where name=&name; --地址符表示从控制台接受变量;

dbms_output.put_line(v_name||'的密码为:'||v_passwd);

exception

when no_data_found then

dbms_output.put_line('输入的用户名不存在!');

end;

----过程

过程用于执行特定的操作;可以有输入参数和输出参数,

--eg4:

create procedure changepasswd(name1 varchar2,passwd1 varchar2) is

begin

--根据用户名修改密码

update mytable set passwd=passwd1 where name=name1;

end;

-- plsql中执行

call changepasswd('wucaiming','123');

--在java中调用存储工程

//加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

//得到连接

Connection c=DriverManager.getConnection("jdbc:oracle:thin:@192.168.100.145:1521:SDZC","omgap","omgap");

//创建CallableStatement

CallableStatement cs=c.prepareCall("{call changepasswd(?,?)}");

//给?赋值

cs.setString(1,"wucaiming");

cs.setString(2,"123");

//执行

cs.execute();

/* 如何使用过程返回值?*/

函数用于返回特定的数据。

--eg5:

create or replace function f_returnpasswd(name1 varchar2) return varchar2 is

pwd varchar2(30);

begin

select passwd into pwd from mytable where name=name1;

return pwd;

end;

--plsql中的调用

var a varchar2(30);

call f_returnPasswd('wucaiming') into:a;

包用于在逻辑上组合过程和函数,它有包规范和包体两部分组成。

--创建包

create package p_package is

procedure changepasswd(name1 varchar2,passwd1 varchar2);

function f_returnpasswd(name1 varchar2) return varchar2;

end;

--实现包体

create or replace package body p_package is

procedure changepasswd(name1 varchar2,passwd1 varchar2) is

begin

--根据用户名修改密码

update mytable set passwd=passwd1 where name=name1;

end;

推荐阅读
  • 探讨架构师在项目中应如何平衡对产品的关注和对团队成员的关注,以实现最佳的开发成果。 ... [详细]
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
  • 如何优化现货铝投资以实现更大收益?
    本文探讨了通过优化交易策略和风险管理,如何在现货铝市场中获得更高的收益。我们将详细介绍技术分析、风险控制等关键要素。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 区块链赋能新零售:提升线下溯源防伪体验,保障线上消费安全
    通过区块链技术的应用,实现产品全流程溯源和防伪,为消费者提供更安全、放心的线上线下购物体验。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 黑鸟安全团队发布最新警告,Apache Struts2框架曝出S2-048高危漏洞。目前该漏洞的攻击代码(POC)已公开,建议各企业和组织立即检查是否使用了受影响的Struts2版本,并采取相应措施进行防护。 ... [详细]
  • 本文深入介绍了责任督学制度的背景、职责和实施情况,帮助读者全面理解这一教育督导机制。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 亿航184:全球首款全电力自动驾驶载人飞行器
    北京时间2016年1月7日,中国智能无人机公司亿航在拉斯维加斯CES展会上发布了其革命性的全电力低空自动驾驶载人飞行器——亿航184。这款飞行器不仅实现了人类的全自动驾驶飞行,还为中短途交通出行提供了创新解决方案。 ... [详细]
  • 本文探讨了2012年4月期间,淘宝在技术架构上的关键数据和发展历程。涵盖了从早期PHP到Java的转型,以及在分布式计算、存储和网络流量管理方面的创新。 ... [详细]
  • 科研单位信息系统中的DevOps实践与优化
    本文探讨了某科研单位通过引入云原生平台实现DevOps开发和运维一体化,显著提升了项目交付效率和产品质量。详细介绍了如何在实际项目中应用DevOps理念,解决了传统开发模式下的诸多痛点。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
author-avatar
隔壁小王
刚开始
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有