您的位置:首页 > 博客中心 > 数据库 >

Oracle系统学习摘要

时间:2022-03-14 04:19

对于企业级大型系统,Oracle数据库的重要性不言而喻,作为长期使用Sql server的developer,花了点时间学习了一个Oracle的系列课程,总结一下。

1.oracle一些基础命令

  sql*plus是操作Oracle的常用工具,以下一些常用命令:

  (1)连接数据库:conn 用户名/密码 as sysdba/sysoper

  (2)关闭连接:disc

  (3)改密码:psssw, alter user *** identified by ***

  (4)显示当前用户: show user

  (5)创建用户:create user identified by pwd,删除用户: drop user [cascade]

 

2.Oracle的表,数据对象,权限管理和角色,数据字典

  Oracle数据类型:

     字符类型: char 定长,最大2000字符;  varchar2 变长,最大4000字符; clob  字符型大对象,最大4G。

     数字类型:number(n,m)  

     日期: date

 

  权限和角色

    方案(schema):讲权限之前,这里有个方案的概念,每个用户建立的时候,都对应一个方案,其名称与用户名相同。oracle的表,存储过程,函数,视图,触发器,游标等等,称为数据对象,每个用户的方案下面都会包含其自身的数据对象。

     权限:执行特定的sql命令或者访问对象的权利。oracle包括系统权限、对象权限2大类。

     系统权限:系统权限是指执行特定类型sql命令的权利。它用于控制用户可以执行的一个或是一组数据库操作。比如当用户具有create table权限时,可以在其方案中建表,当用户具有create any table权限时,可以在任何方案中建表。oracle提供了100多种系统权限。比如,常用的有: create session 连接数据库 create table 建表 ;create view 建视图 ;create procedure 建过程、函数、包;create trigger 建触发器;create cluster 建簇等。

title  emp.job%type); --定义pl/sql记录类型

      参照变量:用于存放数值指针的变量。通过使用参照变量,可以使得应用程序共享相同对象,从而降低占用的空间。在编写pl/sql程序时,可以使用游标变量(ref cursor)和对象类型变量(ref obj_type)两种参照变量类型。

      --定义游标sp_emp_cursor
        type sp_AAA_cursor is ref cursor;
      --定义一个游标变量
        test_cursor sp_AAA_cursor;
      --定义变量
        v_par1 AAA.Col1%type;
        v_par2 AAA.Col2%type;
        begin
        --执行
        open test_cursor for select Col1,Col2 from AAA where Col3=&?;
       --循环取出
       loop
            fetch test_cursor into v_par1,v_par2;
            --判断是否test_cursor为空
            exit when test_cursor%notfound;
            dbms_output.put_line(‘Column1:‘||v_par1||‘ Column2:‘||v_par2);
       end loop;

    PL/SQL 分页存储过程:

    create or replace package testpackage as
      TYPE test_cursor is ref cursor;
    end testpackage;

    #NAME?
    create or replace procedure paging 
      (

          tableName in varchar2,
      Pagesize in number,--一页显示记录数
      pageNow in number,
      myrows out number,--总记录数
      myPageCount out number,--总页数
      p_cursor out testpackage.test_cursor--返回的记录集
    ) is
    --定义sql语句参数 
    v_sql varchar2(1000);
    #定义开始和结尾数
    v_begin number:=(pageNow-1)*Pagesize+1;
    v_end number:=pageNow*Pagesize;
    begin
        --主要逻辑
      v_sql:=‘select * from (select t1.*, rownum rn from (select * from ‘||tableName||‘) t1 where rownum<=‘||v_end||‘) where       rn>=‘||v_begin;
      #关联sql和游标
      open p_cursor for v_sql;
      --计算myrows和myPageCount 
      --组织sql
      v_sql:=‘select count(*) from ‘||tableName;
      --执行sql,并把返回的值,赋给myrows;
      execute inmediate v_sql into myrows;
      --计算myPageCount
      if mod(myrows,Pagesize)=0 then
        myPageCount:=myrows/Pagesize;
      else
        myPageCount:=myrows/Pagesize+1
      end if;
      --关闭游标
      close p_cursor;
    end;

    

热门排行

今日推荐

热门手游