网站首页  留学  移民  外语考试  英语词汇  法语词汇  旧版资料

请输入您要查询的出国留学信息:

 

标题 【转载】美国留学procedure
内容
    acc
    (zcaid number,zraid number,accountes INOUTnumber)
    is flags number;
    begin update accounts set money=money+accountes where aid=zraid returning flag into flags;
    ifsql%rowcount=0then raise_application_error(-20002,'目标账号不存在');
    elsif(flags=1)then raise_application_error(-20003,'目标账号已被锁定');
    endif;
    update accounts set money=money-accountes where aid=zcaid returning money into accountes;
    if(accountes=10)then raise_application_error(-20004,'你帐户余额不足十元请取消操作');
    endif;
    commit;
    end;
    ---
    DECLARE v1NUMBER:=300;
    BEGIN acc(9,10,v1);
    dbms_output.put_line(v1);
    END;
    包的使用
    CREATEORREPLACEPROCEDURE hello(
    p_emp INOUT emp.ename%TYPE
    )
    ---
    AS BEGIN p_emp:=upper(p_emp);
    dbms_output.put_line('hello,'||p_emp);
    END;
    CREATEORREPLACEPACKAGE bao_1 AS PROCEDURE hello(p_emp emp.ename%TYPE);
    FUNCTION add_number(a NUMBER,b NUMBER)RETURNNUMBER;
    END;
    CREATEORREPLACEPACKAGEBODY bao_1 AS PROCEDURE hello(p_emp emp.ename%TYPE)
    AS BEGIN
    --p_emp:=upper(p_emp);
    dbms_output.put_line('hello,'||p_emp);
    END;
    FUNCTION add_number(a NUMBER,b NUMBER)RETURNNUMBER AS BEGIN RETURN NVL(a,0)+NVL(b,0);
    END;
    END;
    CALL bao_1.hello('lovo');
    SELECT bao_1.add_number(10,NULL)FROM dual;
    createorreplaceprocedure acc
    (zcaid number,zraid number,accountes INOUTnumber)
    is flags number;
    begin update accounts set money=money+accountes where aid=zraid returning flag into flags;
    ifsql%rowcount=0then raise_application_error(-20002,'目标账号不存在');
    elsif(flags=1)then raise_application_error(-20003,'目的账号已被锁定');
    endif;
    update accounts set money=money-accountes where aid=zcaid returning money into accountes;
    if(accountes=10)then raise_application_error(-20004,'你帐户余额不足十元请撤消操作');
    endif;
    commit;
    end;
    ---
    DECLARE v1NUMBER:=300;
    BEGIN acc(9,10,v1);
    dbms_output.put_line(v1);
    END;
    select*from accounts
    --特点:无返回值存储过程
    Connection conn=.;
    String spName="{call acc(?,?,?)}";
    CallableStatement cstmt=conn.prepareCall(spName);
    cstmt.setString(1,"值");
    …
    cstmt.executeUpdate();
    --特色:有返回值存储过程,返回一个值
    Connection conn=.;
    String spName="{call acc(?,?,?)}";
    CallableStatement cstmt=conn.prepareCall(spName);
    cstmt.setInt(1,9);
    cstmt.setInt(2,10);
    cstmt.setInt(2,150);
    cstmt.registerOutParameter(3,java.sql.Types.DOUBLE);
    cstmt.executeUpdate();
    int money=cstmt.getInt(3);
    System.out.println("余额:"+money);
    1.只读事务--只读事务
    只读事务是指只容许执行查询的事务,而不许可执行其它任何dml
    操作的事务,使用只读事务可以确保用户只能获得某时光点的数据,
    假定:机票代售票点天天18点开端统计今天的销售情况,这时可以
    应用只读事务,在设置了只读事务后,只管其它会话可能会提交新的事务
    ,然而只读事务将不会取得新数据的变更,从而可以保障取得特定时间
    点的数据信息。
    --在做统计的时候同时也在卖票。不可能在统计的统计的时候不答应卖票
    --设置吟诗事务
    settransactionreadonly
    --示例:1.以system登陆
    再set transactionreadonly
    连到scott/tiger登陆,select*from emp;有18行列出来了
    再增加一条数据
    insertinto emp(empno,ename,hiredate)values(111,'zbm',to_date('2000-10-01','yyyy-mm-dd'));
    commit;
    在scott中能看得到该用户zbm
    在system用户中不能看到该用户zbm--select*from scott.emp;
    --在个用户中设置了只读事务,之后的操作就不能读出来了。
    --一般主要用在机票代售点,银行的本钱的统计,职员工资的统计
    --字符函数
    lower(char):将字符串转成小写的格式
    upper(char):将字符串转居大写的格式
    length(char):返回字符串的长度
    substr(char,m,n):取字符串的子串
    replace(char,search_string,repalce_string)
    --将姓名按小/大写显示
    select lower(ename)from emp;
    select upper(ename)from emp;
    --显示正好为5个字符的员工姓名
    select ename ename from emp where length(ename)=5;
    --显示所有员工的前三个字符
    select substr(ename,0,3)from emp;
    --以首字母大写的方式显示所有的员工
    select upper(substr(ename,0,1))||lower(substr(ename,1,len gth(ename)-1))from emp;
    --以首字母小写的方式显示所有的员工
    select lower(substr(ename,0,1))||upper(substr(ename,1,len gth(ename)-1))from emp;
    --把名字中的a字母替为我
    selectreplace(ename,'A','我')from emp;
    --数字函数
    round(n,[m]):四舍五入,没m舍到整数,m为正数,舍到小数后m位,m为负数,舍到数前m位
    trunc(n,[m]):截取数字,与round一样,只不外前者是四舍五入,后者是截取
    mod(m,n):取模
    floor(n):返回小于或等于n的最大整数
    ceil(n):返回大于n或即是n的最小整数
    --对数字的处理,在财务系统或在银行顶用的最多,不同的处理办法
    --对账务报表有不同的成果
    用四种方法算年薪
    用round select(round(sal)+round(comm))*13as年薪from emp where ename='ALLEN';--24700 select(round(sal,2)+round(comm,2))*13as年薪from emp where ename='ALLEN';--24877
    用trunc select(trunc(sal)+trunc(comm))*13as年薪from emp where ename='ALLEN';--24700
    用floor,用ceil一样
    selectmod(10,3)from dual;--1
    --例,数据:2345.56 45.94
    --显示在一个月为30天的情况下所有员工的日薪金,疏忽余数
    select*from emp forupdate;
    --用
    oracle第四天
    --日期专题
    日期函数用于处置date类型的数据,默认日期格局是:dd-mon-yy即12-7月-78 1).sysdate:该函数返回系统时间selectsysdatefrom dual;
    2).add_months(d,n)
    3).last_day(d):返回指定日期所在月份的最后一天
    --题目一:查找已经入职8个月多的员工
    select*from emp wheresysdate add_months(hiredate,200);
    --题目二:显示满10年服务年限的员工的姓名和受雇日期。
    select ename,hiredate from emp wheresysdate add_months(hiredate,120);
    --题目三:对于每一个员工,显示其参加公司的天数。
    select ename,sysdate-hiredate as"入职天数"from emp;
    --标题四:找出各月倒数第3天受雇的所有员工。(在结账的时候很有用)
    select hiredate,last_day(hiredate),last_day(hiredate)-2from emp;
    --转换函数
    1.不必函数也能转换
    insertinto emp(empno,ename)values('001','张三丰');
    2.字符串转化函数
    select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss')from emp;
    select ename,to_char(sal,'L 99999.999')from emp;--L表示本地的货币符号
    select ename,to_char(sal,'L99,999.99')as rmb from emp;--L表现本地的货泉符号
    select ename,to_char(sal,'$99,999.99')as rmb from emp;
    3.显示1980年入职的员工
    select*from emp where to_char(hiredate,'yyyy')=1981;
    4.显示所有12月份入职的员工
    select*from emp where to_char(hiredate,'mm')=12;
    1.数据库管理员,管理员有基础职责
    2.数据库/表的逻辑备份与恢复
    3.数据字典和动态机能视图
    4.管理表空间和数据文件,数据字典,性能视图
    解释:每个数据库应当至少有一名数据库管理员dba
    ,但我国中小企业个别不,至公司的dba做什么呢?
    --职责
    1).安装和进级oracle数据库
    2).建库,表空间,表,视图,索引.
    3).制订并实行备份与恢复打算
    4).数据库权限治理,调优,故障消除--重点
    5).对高等dba,请求能参加名目开发,会编写sql语句服务器数据恢复,存储进程
    ,触发器,规矩,约束,包
    --体系函数
    1.查看当前用户,及当前数据库--db_name
    在sqlplus下show user;
    或
    select sys_context('userenv','session_user')from dual;
    select sys_context('userenv','db_name')from dual;--orcl 2.查看当前所用语言---language select sys_context('userenv','language')from dual;
    3.显示当前会话客户所对应的默认方案名--方案和用户关系?
    --用户创立之后,会主动创建一个方案,方案与用户同名,方案中有各种
    --对象,如触发器,表,视图,过程等
    select sys_context('userenv','current_schema')from dual;
    4.显示当前主机名
    select sys_context('userenv'数据恢复,'host')from dual;
    sys和system比拟1.存储数据的主要性不同
    占有数据库管理员角色dba
    --sys用户:(其方案中有基表,动态视图)系统管理员角色sysdba
    系统操作员角色sysoper
    角色:数据库管理员角色dba
    --system用户:(方案中为次级数据:)系统管理员角色sysdba 2.权限不同
    1).sys用户必须以as sysdba或as sysopr情势登陆,不能以nomal方式登陆数据库
    system是畸形登陆,它其实就是一个一般的dba用户,但作为as sysdba登陆,其结果
    实际上它作为sys用户登录的,从登陆信息咱们可以看出。
    sqlplus sys/tigertiger assysdba可以登陆
    conn sys/tigertiger;--你不再衔接到ORACLE。
    conn sys/tigertger assysdba;--可以连接
    即:conn system/tigertiger是以普通的dba的身份登陆的(conn system/tigertiger asdba)
    3.权限比较。sysdba sysoper dba sysdba sysoper startup(启动数据库)startup shutdown shutdown alterdatabaseopen/mount/backup一样
    转变字符集--none createdatabase(创建数据库)--不能
    dropdatabase(删除数据库)--不能
    createspfile createspfile alterdatabasearchivelog(归档日志)一样
    alterdatabaserecover(恢复数据库)只能完整恢复不能不完全恢复
    拥有restricted session会话拥有restricted session权限
    可以让用户用为sys用户连接可以进行一些根本的操作,不能查看用户数据
    登陆之后是sys登陆之后是public
    --dba的权限是登陆之后才有的对数据库的操作
    4.数据库管理员的工作
    1).显示初始化参数,200多个初始化参数
    show parameter命令,在init.ora文件中去D:\oracle\srvm\admin\init.ora 5.数据库表的逻辑备份与恢复
    逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程,逻辑
    恢复是指当数据库对象被误操作而破坏后使用工具import应用备份的文件把数据
    对象导入到数据库的过程。物理备份即可在数据库的open的状态下进行也可以
    在封闭数据库落后行,但是逻辑备份和恢复在open的状态下进行(即数据库翻开时进行)。
    --导出分三品种型:
    导出表,导出方案,导出数据库三种方式
    导出使用exp命令来完成的,该命令常用的选项有:
    userid:用于指定执行导出操作的用户名,口令,连接字符串
    tables:用于指定履行导出操作的表
    owner:用于指定执行导出操作的方案
    full=y:用于指定执行导出操作的数据库
    inctype:用于指定执行导出操作的增量类型
    file:用于指定导出文件名
    一.导出表
    1.导出本人的表,进到oracle装置的bin目录下,D:\oracle\BIN再执行以下的命令
    exp userid=scott/tigertiger@orcl tables=(emp,dept)file=d:\e1.dmp 2.导出其它方案的表
    如果用户要导出其它方案的表,则需要dba的权限或是
    exp_full_database的权限,比方system就可以导出scott的表
    exe userid=system/tiger@orcl tables=(scott.emp)file=d:\e2.dmp
    --scott.emp--哪一个计划的表
    3.导出表结构
    exp userid=scott/tiger@orcl tables=(emp)file=d:\e3.dmp rows=n
    导出大表的构造,数据量大的时候exp userid=scott/tiger@orcl tables=(emp)file=d:\e3.dmp direct=y
    三.导出方案
    导出方案是支使用export工具导出一个方案或是多个方案中的所有对象(表,索引,束缚)
    和数据,并存放到文件中。
    1).导出自己的方案
    exp scott/tiger@orcl owner=scott file=d:\scott.emp 2).导出其它方案
    exp_full_database的权限,例如system用户就能够导出任何方案
    exp system/tiger@orcl owner=(system,scott)file=d:\system.dmp 4.导出数据库
    exp userid=system/tiger@orcl full=y inctype=completefile=d:/aa.dmp
    二.导入表
    1).导入自己表
    imp userid=scott/tiger@orcl tables=(emp)file=d:\x.dmp 2).导入表到其它用户
    要求该用户具有dba权限,或是imp_full_database imp userid=system/tiger@orcl tables=(emp)file=d:\x.dmp touser=scott 3).导入表的结构
    导入表的结构而不导入数据
    imp userid=scott/tiger@orcl tables=(emp)file=d:\x.dmp rows=n 4).导入数据
    表已经存在,可以只导入表的数据
    imp userid=scott/tiger@orcl tables=(emp)file=d:\x.dmp ignore=y
    --数据字典和动态性能视图
    基表:数据字典是oracle数据库中最重要的组成局部,它供给了数据库的一些系统信息--存放静态信息
    动态性能视图:动态性能视图记录了例程启动后的相干信息.--存入常常变化的动态信息
    数据字典重要用于取得数据库信息,用户一般不能去操作它
    --user_tables:当前用户领有的所有的表
    select table_name from user_tables;
    --all_tables当前用户可以访问的所有的表,不仅自己的表,别人的表,只有
    我能拜访,也能查出来
    select table_name from all_tables;
    --dba_tables数据库中所有的表
    select table_name from dba_tables;--表或视图不存在,由于你没有权限
    以sys/tiger asdba;这个身份可以查看了
    --数据字典和动态性能视图
    用户名,权限,角色
    在建立用户时,oracle会把用户的信息存放到数据字典中,当给用户
    受权或是角色时,oracle会将权限跟角色的信息放到数据字典中
    1.通过查询:dba_users可以显示所有的数据库用户具体信息
    select username from dba_users;--把所有的用户都列出来了
    select username,passwordfrom dba_users;--把所有的用户都列出来了
    --密码是加密的
    2.通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限
    select*from system_privilege_map orderbyname;
    select username from dba_users;--把所有的用户都列出来了
    3.通过查询数据字典视图dba_tab_privs可以显示用户具备的对象权限
    selectdistinctprivilegefrom dba_tab_privs;
    4.通过查询字典dba_col_privs可以显示用户具有的列权限
    5.通过查询数据字典视图dba_role_privs可以显示用户所拥有的的角色
    select*from dba_role_privs where grantee='SCOTT';
    --角色和权限,一个角色里面有良多的权限,
    6.查问数据库的表空间
    select tablespace_name from dba_tablespaces;
    7.查询oracle所有的角色,正常是dba.即:oracle空间有多少种角色
    select*from dba_roles;
    8.如何查询一个角色所含的权限?
    实在这里面包含了:一个角包含的系统权限
    select*from dba_sys_privs where grantee='DBA';
    select*from dba_sys_privs where grantee='CONNECT';
    一个角色包括的对象权限
    select*from dba_tab_privs where grantee='DBA';
    --表空间
    表空间是数据库的逻辑组成部门,从物理上讲,数据库存放在
    数据文件中,从逻辑上讲,数据库则是寄存在表空间中的,表空间
    由一个或是多个数据文件组成.
    表空间,数据文件,表的关联?
    表相当于人,表空间相当于成都这个地方,数据文件相当于人的栖身地
    --表空间,段,区,块(由大到小)
    画个方格(表空间),竖分三段(段),每段横分三段(区),再把最小段分三段(块)
    国度,省,市,县,镇,乡,社。
    Oracle中的表空间是没有限度的.--表空间
    表空间是数据库的逻辑组成部分,从物理上讲,数据库存放在
    数据文件中,从逻辑上讲,数据库则是存放在表空间中的,表空间
    由一个或是多个数据文件组成.
    表空间,数据文件,表的关系?
    表相称于人,表空间相当于成都这个处所,数据文件相称于人的寓居地
    --表空间,段,区,块(由大到小)
    表空间的作用:
    1).把持数据库占用的磁盘空间
    2).dba可以将不同的数据类型安排到不同的地位,这样有利于
    进步i/o性能,同时利于备份和恢复等管理操作。
    --建立表空间
    建立表空间是使用create tablespace命令来实现的,须要留神的是
    ,普通情形下,建立表空间是特权或是dba来执行的,假如用其它用户来创建
    表空间,则用户必需有create tablespace的系统权限
    --建立数据库表空间
    在建立数据库后,为便于管理表,最好建立自已的表空间
    createtablespace data01datafile'd:\test01.dbf'
    size 20m uniformsize 128k
    --说明:执行完上述命令后,会建扬名称为data01的表空间,
    并为该表空间建立名称为data01.dbf的数据库文件,区的大小为
    128k,
    使用数据表空间
    createtable mypart(
    deptno number(5),
    dname varchar2(10),
    loc varchar2(15)
    )tablespace data01;--当初就使用表空间了
    select*from mypart;
    insertinto mypart values(10,'hello','成都');
    改变表空间的状态
    当建破表空间时,表空间处于联机(online)状况,此时该表空间
    是可以访问的,并且该表空间是可以读写的,即可以查询该表空间的数据
    ,而且还可以在表空间执行各种语句。但是在进行系统维护或是
    数据保护时,可能需要改变表空间的状态。一般情况下,由特权
    用户或是dba来操作
    1).使表空间脱机
    altertablespace表空间名offline 2).使表空间联机
    altertablespace表空间名online 3).只读表空间
    当建立表空间时,表空间可以读写,如果不盼望该表空间上
    执行update,delete,insert操作,那么可以将表空间修正为
    只读:
    altertablespace表空间名readonly altertablespace data01readonly--这个表中的数据不能修了
    4).显示表空间中所有的表
    select*from all_tables where tablespace_name='DATA01';
    结果:1SCOTT MYPART DATA01 5).晓得表名,查看该表属于哪个表空间
    select tablespace_name美国留学,table_name from user_tables where table_name='EMP';--结果:表空间:users,表名:EMP select tablespace_name,table_name from user_tables where table_name='MYPART';
    6).删除表空间
    一般情况下,由特权用户或是dba来操作,如果是其它用户操作
    那么要求用户存在drop tablespace系统权限
    droptablespace'表空间'includingcontentsanddatafiles;
    说明:including contents表示删除表空间时,删除该空间的所有的
    数据库对象,而datafiles表示将数据库文件也删除.
    7).扩展表空间
    表空间是由数据文件组成的,表空间的大小实际上就是数据文件相加
    后的大小,那么我们可以设想,假设表employee存放到data01表空间上
    ,初始大小就是2m,当数据满2m空间后,如果在向employee表插入
    数据,这样就会显示空间不足的过错.
    案例阐明:
    一,树立一个表空间sp001 createtablespace demo01datafile'd:\demo01.dbf'
    size 10m uniformsize--dba才行
    二,在该表空间上建立一个普通表mydment其结构和dept一样
    createtable demoemp asselect*from emp where 1=2;
    select*from demoemp;
    三,向该表中加入一数据
    insertinto demoemp(select*from emp);
    select*from demoemp;--这样持续插入,确定会把数据库整爆
    四,当必定时候就会呈现无奈扩大的问题,怎么办?
    五,就扩展表空间,为其增添更多的存储空间,有三种方式:
    1).增加数据文件
    altertablespace sp01adddatafile'd:\test\sp01.dbf'size20m 2).增长数据文件的大小
    alterdatabasedatafile'd:\test\sp01.dbf'resize20m;
    --这里需要注意的是数据文件的大小不要超过500m 3).设置文件的自动增加
    alterdatabasedatafile'd:\test\sp01.dbf'autoextend onnext10m maxsize500m;
    关键词:服务器数据
    
    
随便看

 

出国留学网为出国留学人员提供留学、移民、外语考试等出国知识,帮助用户化解出国留学过程中的各种疑难问题。

 

Copyright © 2002-2024 swcvc.com All Rights Reserved
更新时间:2025/5/30 13:22:44