oracle pl/sql

来源:互联网 发布:淘宝牛排哪个牌子好 编辑:程序博客网 时间:2024/06/04 00:54

-- 创建database link

create database link stu_link

  connect to student identified by studentusing

  '(DESCRIPTION =

          (ADDRESS_LIST =

              (ADDRESS = (PROTOCOL = TCP)(HOST = 10.38.202.43)(PORT = 1521))

          )

          (CONNECT_DATA =

              (SERVICE_NAME = stud)

          )

  )';

-- 查看已存在的dblink

select * from dba_db_links;

-- link$表中查看dblink信息

desc link$

select * from link$;

 

-- Create sequence 创建序列

create sequence seq_1

minvalue 1

maxvalue 999999999999999999999999999

start with 999

increment by 1

cache 10;

 

create table bi_gb_config_bak as select * from bi_gb_config

truncate table bi_gb_config

 

***********************************************************************************************

 

PL/SQL

 

    PL/SQL语句块结构:

   

       DECLARE

         变量、游标、用户定义异常

       BEGIN            -- 必须的

         sql语句

         pl/sql语句

       EXCEPTION

         自定义异常

       END              -- 必须的

      

      

     PL/SQL的数据类型

         PL/SQL类型

                   标量类型

                   数字、字符(单引号界定一个或多个字符)、行标识、日期、布尔(true,false,null)

                   复合类型

                   RECORDNESTED TABLEINDEX-BY TABLEVARRAY

                   引用类型

                   REF CURSORREF OBJECT TYPE

                   LOB类型

                   BFILECLOBBLOB

                   对象类型

                   OBJECT TYPE

                   用户定义类型

         -- boolena表达式注意:

                   Not null 结果是null

                   True and null

                   False and null

                   True or null

                   False or null

函数

         函数是命名了的、存储在数据库中的PL/SQL程序块。函数接受零个或多个参数,有一个返回值,返回值的数据类型在创建函数时定义。

         语法:

  Function name[(parameter[,parameter,…]}] return datatypes IS

  [local declarations]

  Begin

  Execute statements

  [Exception

  Exception handlers]

  End [name]

过程

存储过程是一个PL/SQL程序块,接受零个或多个参数作为输入(INPUT)或输出(OUTPUT)、或既作输入又作输出(INOUT),与函数不同,存储过程没有返回值,存储过程不能由SQL语句直接使用,只能通过EXECUT命令或PL/SQL程序块内部调用,定义存储过程的语法如下:PROCEDURE name [(parameter[,parameter,...])] IS

 [local declarations]

BEGIN

execute statements

[EXCEPTION exception handlers ]

END [name]

 

包(package)

  包是被组合在一起的相关对象的集合,当包中任何函数或存储过程被调用,包就被加载入内存中,包中的任何函数或存储过程的子程序访问速度将大大加快。包由两个部分组成:规范和包主体(body),规范描述变量、常量、游标、和子程序,包体完全定义子程序和游标。

 

触发器

触发器与一个表或数据库事件联系在一起的,当一个触发器事件发生时,定义在表上的触发器被触发。

 

 

create procedure update_com

 (v_id in number,v_salary in number default 100) is

 begin

 update emp1

 set id = salary*v_salary

 where name='hs';

 end

 

 

SQLPLUS

实例1:在SQL*Plus中启动和关闭Oracle数据库

    启动数据库:

        </home/system >sqlplus "/ as sysdba“

        SQL>startup

    关闭数据库:

        </home/system >sqlplus "/ as sysdba“

        SQL>shutdown immediate

实例2:在SQL*Plus中创建和删除用户

    1. 创建用户:

        SQL> create user dywa identified by dywa;

        SQL> grant connect,resource to dywa;

        identifyed by后面是用户的密码。

    2. 删除用户:

        SQL> drop user dywa;

    如果用户已经拥有对象,那么需要使用下面语句删除用户:

        SQL> drop user dywa cascade;

实例3:把sunljh用户中的basetab_ccs表结构和所有数据copydywa用户下,用dywa用户登陆,执行:

   SQL> copy from sunljh/sunljh@ora9 replace  basetab_ccs(saccountnumber,naccountleft,spinnumber) using select saccountnumber,naccountleft,spinnumber from basetab_ccs

实例4:使用SQL*Plus执行文件中的sql语句

    1、直接使用命令行执行:

    sqlplus –S username/passwd@service_name @SqlFileName

    2、在SQL*Plus中执行,直接输入@SqlFileName

实例5:利用sqlplusoracle数据导出为informix格式的文本文件(shell介绍)

 

exp是操作系统下一个可执行的文件存放目录/ORACLE_HOME/bin

exp能够将数据库中数据备份压缩成一个二进制系统文件,该文件可以在不同OS间迁移

它有三种模式:

    用户模式:导出用户所有对象以及对象中的数据;

    表模式:导出用户所有表或者指定的表;

    整个数据库:导出数据库中所有对象。

s

exp常用方法如下:

D:\>exp username/password@service_name tables=(table1,table2,…) file=filename

输入exp help=true可以取得帮助

D:\>exp help=true

Export: Release 9.2.0.1.0 - Production on星期三 7 28 20:36:57 2004

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

通过输入 EXP 命令和用户名/口令,您可以

后接用户名/口令的命令:

例程: EXP SCOTT/TIGER

实例1:用户模式,导出用户sunljh的所有对象

     D:\>exp sunljh/sunljh@ora9 file=sunljh.dmp

实例2:表模式,导出basetab_ccstest两表的结构和数据,表名用逗号隔开

     D:\>exp sunljh/sunljh@ora9 file=tables.dmp tables=basetab_ccs,test

实例3:整个数据库,需要使用dba用户登陆

     D:\>exp system/system@ora9 full=true file=database.dmp

实例4:在basetab_ccs里面加上导出basetab_ccs的查询条件saccountnumber= '10000'

D:\>exp sunljh/sunljh@ora9 tables=basetab_ccs query=\"where saccountnumber=\ '10000\' \" file=c:\sunljh2.dmp

实例5sunljh.par作为exp的参数文件,里面具体参数可以根据需要去修改

    D:\>exp parfile=sunljh.par file=c:\sunljh_1.dmp,c:\sunljh_2.dmp         filesize=2000M log=c:\sunljh_exp.log

   参数文件sunljh.par内容

        userid=sunljh/sunljh@ora9

        buffer=8192000

        compress=n

        grants=y

   例子中如果文件sunljh_1.dmp大于2000M,那么剩下的数据会放到另外一个文件sunljh_2.dmp

原创粉丝点击