Oracle PL/SQL 编程基础 实例

create table mytest(name varchar(20),password varchar(30));

create or replace procedure sp_pro2 is

begin

insert into mytest values(‘fc‘,‘123‘);

end;

查看错误信息

show error

如何调用该过程:

1, exec 过程名 (参数,。。)

2.  call 过程名 (参数  )

set server output on

begin

dbms_output.put_line(‘helloe‘);

end;

---------------------

declare

v_ename varchar(20);

begin

select ename into v_ename from emp where empno=&aa;

dbms_output.put_line(‘姓名:‘||v_ename);

end;

-----------

create procedure sp_pro3 (spName varchar2,newSal number) is

begin

--执行部分

update emp set sal=newSal where ename=spName;

end;

--dioyong

call sp_pro3(‘scott‘,‘8000‘);

--------------函数 -------

CREATE or replace  function sp_fun1(spName varchar2) return

number is yearsal number(7,2);

begin select sal*12+nvl(comm,0) into yearsal from emp

where ename=spName;

return yearsal;

end;

--diaoyong

var abc number;

call sp_fun1(‘SCOTT‘) into : abc;

---------------------------

-------包------------由包规范和包体组成的

--创建一个包sap_pack1

--声明该包有一个过程和一个函数

create or replace package sp_pack1 is

procedure update_sal(spName varchar2,newsal number);

function  annual_income(spName varchar2) return number;

end;

--创建包体---

create or replace package body sp_pack1 is

procedure update_sal(spName varchar2,newsal number) is

begin

update emp set sal=newsal where ename=spName;

end;

function   annual_income(spName varchar2) return number

is yearsal number(7,2);

begin   select sal*12+nvl(comm,0) into yearsal from emp

where ename=spName;

return yearsal;

end;

end;

---调用 ----

call sp_pack1.update_sal(‘SCOTT‘,9000);

----------定义并使用变量---================================

--  标量类型 scalar

v_ename varchar(10);

v_sal  number(6,2):=5.4

v_data date;

v_valid  boolean not null default false;

---输入员工号,显示 name sal tax

declare

v_tax_rate number (3,2):=0.03;

-- v_ename varchar2(5);

v_ename  emp.ename%type;

-- v_sal  number(7,2);

v_sal  emp.sal%type;

v_tax_sal number (7,2);

begin

select ename,sal into v_ename,v_sal from emp where empno=&no;

--计算所得税

v_tax_sal:=v_sal*v_tax_rate;

--输出

dbms_output.put_line(‘name:‘||v_ename||‘工资‘||v_sal  ||‘交税:‘||v_tax_sal);

end;

--复合类型  composite

----pl/sql 记录  类似于高级语言的结构体

--定义一个plsql 记录类型  emp_record_type

declare

type   emp_record_type is record (aname emp.ename%type,salary emp.sal%type,title emp.job%type);

--定义了一个 变量 sp_record  这个变量的类型是emp_record_type

sp_record emp_record_type;

begin

select ename,sal,job into  sp_record from  emp where empno=7788;

dbms_output.put_line(‘员工名:‘||sp_record.aname);

end;

--------pl/sql  表  相当于该机语言里的数组

--定义一个plsql 表类型  emp_table_type

declare

type emp_table_type is table  of emp.ename%type index by  binary_integer;

sp_table emp_table_type;

begin

select ename into  sp_table(0)  from emp where empno=7788;

dbms_output.put_line(‘员工名--》‘||sp_table(0));

end;

--参照类型

---1游标变量

--实例一  输入部门号,显示所有的员工姓名和他的工资

declare

--定义游标类型

type sp_emp_cursor is ref cursor;

--定义游标变量

test_cursor sp_emp_cursor;

--定义变量

v_ename emp.ename%type;

v_sal emp.sal%type;

begin

--执行

--把test_cursor 和select 结合

open test_cursor for select ename,sal  from emp where deptno=&depno;

--循环取出

loop

fetch test_cursor into v_ename,v_sal;

--判断是否test——cursor 为空

exit when  test_cursor%notfound;

dbms_output.put_line(‘员工名->‘||v_ename||‘工资->‘||v_sal);

end loop;

end;

Oracle PL/SQL 编程基础 实例,布布扣,bubuko.com

时间: 2024-11-03 22:16:20

Oracle PL/SQL 编程基础 实例的相关文章

Oracle PL/SQL 编程基础 实例 2

if  循环  控制语句 if--then        endif if----then ----else   endif if-----then --elsif then ----else     endif --编写一个过程,可以 输入一个雇员名,如果该雇员的工资低于2000就给他增加10% create   or replace procedure  sp_pro6(spName varchar2) is v_sal  emp.sal %type; begin select sal in

ORACLE PL/SQL编程详解

ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问.由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理.除此之外,可以在ORACLE数据库的某些客户端工具中,使用PL/SQL语言也是该语言的一个特点.本章的主要内容是讨论引入PL/SQL语言的必要性和该语言的

ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)

原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!)   继上篇:ORACLE PL/SQL编程之八:把触发器说透 得到了大家的强力支持,感谢.接下来再下猛药,介绍下一篇,大家一定要支持与推荐呀~!我也才有动力写后面的.   本篇主要内容如下: 6.1 引言 6.2 创建函数 6.3 存储过程 6.3.1 创建过程 6.3.2 调用存储过程 6.3.3 AUTHID 6.3.4 

[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日之功) 继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)                [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]

[推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)

原文:[推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆) [推荐]ORACLE PL/SQL编程详解之三: PL/SQL流程控制语句(不给规则,不成方圆) ——通过知识共享树立个人品牌. 继上五篇: [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼.百战不

[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)

原文:[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下) ——通过知识共享树立个人品牌. 继上六篇: [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆) [推荐]ORACLE PL/SQL编程之四:把游标说透(

[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)

原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天才在于积累!) ——通过知识共享树立个人品牌.   继上七篇:            [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)            [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之

ORACLE PL/SQL编程之八(一): 把触发器说透

本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2.3 创建替代(INSTEAD OF)触发器 8.2.3 创建系统事件触发器 8.2.4 系统触发器事件属性 8.2.5 使用触发器谓词 8.2.6 重新编译触发器 8.3 删除和使能触发器 8.4 触发器和数据字典 8.5   数据库触发器的应用举例 触发器是许多关系数据库系统都提供的一项技术.在O

ORACLE PL/SQL编程之八(二): 把触发器说透

例2:创建DML语句行级触发器.当对emp表执行INSERT, UPDATE, DELETE 操作时,它自动更新dept_summary 表中的数据.由于在PL/SQL块中不能直接调用DDL语句,所以,利用ORACLE内置包DBMS_UTILITY中的EXEC_DDL_STATEMENT过程,由它执行DDL语句创建触发器. BEGIN  DBMS_OUTPUT.PUT_LINE('插入前');  Disp_dept_summary();  DBMS_UTILITY.EXEC_DDL_STATEM