oracle pl/sql编程详细,Oracle PL/SQL 编程基础 实例

news/2024/7/4 13:09:55 标签: 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;


http://www.niftyadmin.cn/n/1178034.html

相关文章

热部署与热加载

为什么80%的码农都做不了架构师?>>> 1.热部署和热加载的概念 热部署:就是容器状态在运行的情况下重新部署整个项目.在这种情况下一般整个内存会清空,重新加载.简单来说就是Tomcat或者其他的web服务器会帮我们重新加载项目.这种方式可能会造成sessin丢失…

依那西普血清水平与强直性脊柱炎患者疗效无相关性

依那西普血清水平与强直性脊柱炎患者疗效无相关性 De Vries MK, Wolbink GJ, et al. EULAR 2007. Present ID: FRI0382. 背景:我们最近的一研究显示AS的Infliximab无效者与Infliximab外周血水平低以及和出现Infliximab抗体有关。 目的:评价AS的Etanercep…

php 服務器連接,cocos2d-x網絡編程 連接php服務器筆記4

VS工程部分----網絡編程本節會把最終實現代碼和資源放在文章最未提供各位下載學習。本節我們開始重頭戲聯網功能的開發,我用的是cocos2d-x綁定的curl庫,這個curl據說很火,雖然我本人了解的不多只曉得基本用法,讓大家見笑了。好了想…

烂泥:zabbix3.0安装与配置

本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 这个月又快过完了,最近也比较忙,没时间写文章,今天挤点时间把zabbix3.0安装与配置的文章写下来。 其实zabbix3.0的安装很…

Linux统计进程网络,Linux进程网络流量统计

原标题:Linux进程网络流量统计前言linux都有相应开源工具实时采集网络连接、进程等信息其中网络连接一般包括最基本的五元组信息(源地址、目标地址、源端口、目标端口、协议号)再加上所属进程信息pid, exe, cmdline)等。其中这两项数据大多可直接读取linux /proc目录…

MySQL 触发器结构及三个案例demo

--你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够了。这跟SQL的标准有所不同。 CREATE TRIGGER语法 CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW…

设置UIScrollView只可以水平或者竖直滚动

UIScrollView里边包含多个UIWebView: 可以通过设置contentSize的值,设置其width为UIScrollerView可视区域的宽度:即UIScrollView的width,在设置一些alwaysBounceHorizontal之类的属性,那么就只能竖直方向滚动&#xff…

Windows 08R2_AD图文详解

目录 目录软件环境Active Directory域服务 AD的应用创建ADDS域使用Windows窗口来创建ADDS域控制器使用Powershell来创建ADDS域控制器检查ADDC域控制器是否安装成功添加新的管理工具 创建额外域控制器使用Windows窗口界面来安装额外域控制器使用Powershell脚本来安装额外域控制器…