PL/SQL编程
来源:互联网 发布:洛杉矶 气候 知乎 编辑:程序博客网 时间:2024/06/17 18:48
PL/SQL简介
declare
v_eno number;
v_ename varchar2(10);
begin
v_eno:=&empno;
select ename into v_ename from emp where empno=v_eno;
dbms_output.put_line('编号为:'||v_eno||'雇员的名字为:'||v_ename);
end;
变量的声明与赋值
declare
v_result varchar2(30);
begin
dbms_output.put_line('v_result的内容:'||v_result);
end;
declare
v_resultA number:=100;
v_resultB number;
begin
v_resultb:=30;
dbms_output.put_line('计算的结果是:'||(v_resultA+v_resultB));
end;
declare
v_resultA number not null:=100;
begin
dbms_output.put_line('v_resultA变量内容:'||(v_resultA));
end;
declare
v_resultA number not null;
begin
dbms_output.put_line('v_resultA变量内容:'||(v_resultA));
end;
declare
v_resultA constant number not null:=100;
begin
dbms_output.put_line('v_resultA变量内容:'||(v_resultA));
end;
declare
v_resultA constant number not null:=100;
begin
v_resultA:=20;
dbms_output.put_line('v_resultA变量内容:'||(v_resultA));
end;
使用%type声明变量类型
declare
v_eno emp.empno%TYPE;
v_ename emp.ename%TYPE;
begin
dbms_output.put_line('请输入雇员编号:');
v_eno:=&empno;
select ename into v_ename from emp where empno=v_eno;
dbms_output.put_line('编号为:'||v_eno||'雇员的名字为:'||v_ename);
end;
使用%ROWTYPE声明变量类型
declare
v_deptRow dept%ROWTYPE;
begin
select * into v_deptRow from dept where deptno=10;
dbms_output.put_line('部门编号:'||v_deptRow.deptno||',名称:'||v_deptRow.dname||',位置:'||v_deptRow.loc);
end;
运算符
赋值运算符
declare
v_info varchar2(50):='工大计算机学院';
v_url varchar2(50);
begin
v_url:='www.hut.edu.cn';
dbms_output.put_line(v_info);
dbms_output.put_line(v_url);
end;
连接运算符
declare
v_info varchar2(50):='工大计算机学院';
v_url varchar2(50);
begin
v_url:='www.hut.edu.cn';
dbms_output.put_line(v_info||',网址:'||v_url);
end;
关系运算符
declare
v_url varchar2(50):='www.hut.edu.cn';
v_num1 number:=80;
v_num2 number:=30;
begin
if v_num1>v_num2 then
dbms_output.put_line('第一个数字比第二个数字大');
end if;
if v_url like '%hut%' then
dbms_output.put_line('网址之中包含hut单词');
end if;
end;
逻辑运算符
declare
v_flag1 boolean:=true;
v_flag2 boolean:=false;
v_flag3 boolean;
begin
if v_flag1 and (not v_flag2) then
dbms_output.put_line('v_flag1 and (not v_flag2)=TRUE');
end if;
if v_flag1 or v_flag3 then
dbms_output.put_line('v_flag1 or v_flag3 = true');
end if;
if v_flag1 and v_flag3 is null then
dbms_output.put_line('v_flag1 and v_flag3的结果为null。');
end if;
end;
--数据库类型划分
--标量划分
--程序结构
declare
v_countResult number;
begin
select count(empno) into v_countResult from emp;
if v_countResult>10 then
dbms_output.put_line('emp表的记录大于10条。');
end if;
end;
declare
v_countResult number;
begin
select count(deptno) into v_countResult from dept;
if v_countResult>10 then
dbms_output.put_line('dept表的记录大于10条。');
else
dbms_output.put_line('dept表的记录小于10条。');
end if;
end;
declare
v_countResult number;
begin
select count(empno) into v_countResult from emp;
if v_countResult>10 then
dbms_output.put_line('emp表的记录大于10条。');
elsif v_countResult<10 then
dbms_output.put_line('emp表的记录小于10条。');
else
dbms_output.put_line('emp表的记录等于10条。');
end if;
end;
declare
v_empSal emp.sal%TYPE;
v_empName emp.ename%TYPE;
v_eno emp.empno%TYPE;
begin
v_eno:=&inputEmpno;
select ename,sal into v_empName,v_empSal from emp where empno=v_eno;
if v_empSal>3000 then
dbms_output.put_line(v_empName||'的工资属于高工资!');
elsif v_empSal>2000 then
dbms_output.put_line(v_empName||'的工资属于中等工资!');
else
dbms_output.put_line(v_empName||'的工资属于低工资!');
end if;
end;
declare
v_empSal emp.sal%TYPE;
v_dno emp.deptno%TYPE;
v_eno emp.empno%TYPE;
begin
v_eno:=&inputEmpno;
select deptno,sal into v_dno,v_empSal from emp where empno=v_eno;
if v_dno=10 then
if v_empSal*1.1>5000 then
update emp set sal=5000 where empno=v_eno;
else
update emp set sal=sal*1.1 where empno=v_eno;
end if;
elsif v_dno=20 then
if v_empSal*1.2>5000 then
update emp set sal=5000 where empno=v_eno;
else
update emp set sal=sal*1.2 where empno=v_eno;
end if;
elsif v_dno=30 then
if v_empSal*1.3>5000 then
update emp set sal=5000 where empno=v_eno;
else
update emp set sal=sal*1.3 where empno=v_eno;
end if;
else
null;
end if;
end;
--循环结构
LOOP循环
declare
v_i number:=1;
begin
loop
dbms_output.put_line('v_i='||v_i);
exit when v_i>=3;
v_i:=v_i+1;
end loop;
end;
declare
v_i number:=1;
begin
while(v_i<=3) loop
dbms_output.put_line('v_i='||v_i);
v_i:=v_i+1;
end loop;
end;
declare
v_i number:=1;
begin
for v_i in reverse 1..3 loop
dbms_output.put_line('v_i='||v_i);
end loop;
end;
declare
v_eno number;
v_ename varchar2(10);
begin
v_eno:=&empno;
select ename into v_ename from emp where empno=v_eno;
dbms_output.put_line('编号为:'||v_eno||'雇员的名字为:'||v_ename);
end;
变量的声明与赋值
declare
v_result varchar2(30);
begin
dbms_output.put_line('v_result的内容:'||v_result);
end;
declare
v_resultA number:=100;
v_resultB number;
begin
v_resultb:=30;
dbms_output.put_line('计算的结果是:'||(v_resultA+v_resultB));
end;
declare
v_resultA number not null:=100;
begin
dbms_output.put_line('v_resultA变量内容:'||(v_resultA));
end;
declare
v_resultA number not null;
begin
dbms_output.put_line('v_resultA变量内容:'||(v_resultA));
end;
declare
v_resultA constant number not null:=100;
begin
dbms_output.put_line('v_resultA变量内容:'||(v_resultA));
end;
declare
v_resultA constant number not null:=100;
begin
v_resultA:=20;
dbms_output.put_line('v_resultA变量内容:'||(v_resultA));
end;
使用%type声明变量类型
declare
v_eno emp.empno%TYPE;
v_ename emp.ename%TYPE;
begin
dbms_output.put_line('请输入雇员编号:');
v_eno:=&empno;
select ename into v_ename from emp where empno=v_eno;
dbms_output.put_line('编号为:'||v_eno||'雇员的名字为:'||v_ename);
end;
使用%ROWTYPE声明变量类型
declare
v_deptRow dept%ROWTYPE;
begin
select * into v_deptRow from dept where deptno=10;
dbms_output.put_line('部门编号:'||v_deptRow.deptno||',名称:'||v_deptRow.dname||',位置:'||v_deptRow.loc);
end;
运算符
赋值运算符
declare
v_info varchar2(50):='工大计算机学院';
v_url varchar2(50);
begin
v_url:='www.hut.edu.cn';
dbms_output.put_line(v_info);
dbms_output.put_line(v_url);
end;
连接运算符
declare
v_info varchar2(50):='工大计算机学院';
v_url varchar2(50);
begin
v_url:='www.hut.edu.cn';
dbms_output.put_line(v_info||',网址:'||v_url);
end;
关系运算符
declare
v_url varchar2(50):='www.hut.edu.cn';
v_num1 number:=80;
v_num2 number:=30;
begin
if v_num1>v_num2 then
dbms_output.put_line('第一个数字比第二个数字大');
end if;
if v_url like '%hut%' then
dbms_output.put_line('网址之中包含hut单词');
end if;
end;
逻辑运算符
declare
v_flag1 boolean:=true;
v_flag2 boolean:=false;
v_flag3 boolean;
begin
if v_flag1 and (not v_flag2) then
dbms_output.put_line('v_flag1 and (not v_flag2)=TRUE');
end if;
if v_flag1 or v_flag3 then
dbms_output.put_line('v_flag1 or v_flag3 = true');
end if;
if v_flag1 and v_flag3 is null then
dbms_output.put_line('v_flag1 and v_flag3的结果为null。');
end if;
end;
--数据库类型划分
--标量划分
--程序结构
declare
v_countResult number;
begin
select count(empno) into v_countResult from emp;
if v_countResult>10 then
dbms_output.put_line('emp表的记录大于10条。');
end if;
end;
declare
v_countResult number;
begin
select count(deptno) into v_countResult from dept;
if v_countResult>10 then
dbms_output.put_line('dept表的记录大于10条。');
else
dbms_output.put_line('dept表的记录小于10条。');
end if;
end;
declare
v_countResult number;
begin
select count(empno) into v_countResult from emp;
if v_countResult>10 then
dbms_output.put_line('emp表的记录大于10条。');
elsif v_countResult<10 then
dbms_output.put_line('emp表的记录小于10条。');
else
dbms_output.put_line('emp表的记录等于10条。');
end if;
end;
declare
v_empSal emp.sal%TYPE;
v_empName emp.ename%TYPE;
v_eno emp.empno%TYPE;
begin
v_eno:=&inputEmpno;
select ename,sal into v_empName,v_empSal from emp where empno=v_eno;
if v_empSal>3000 then
dbms_output.put_line(v_empName||'的工资属于高工资!');
elsif v_empSal>2000 then
dbms_output.put_line(v_empName||'的工资属于中等工资!');
else
dbms_output.put_line(v_empName||'的工资属于低工资!');
end if;
end;
declare
v_empSal emp.sal%TYPE;
v_dno emp.deptno%TYPE;
v_eno emp.empno%TYPE;
begin
v_eno:=&inputEmpno;
select deptno,sal into v_dno,v_empSal from emp where empno=v_eno;
if v_dno=10 then
if v_empSal*1.1>5000 then
update emp set sal=5000 where empno=v_eno;
else
update emp set sal=sal*1.1 where empno=v_eno;
end if;
elsif v_dno=20 then
if v_empSal*1.2>5000 then
update emp set sal=5000 where empno=v_eno;
else
update emp set sal=sal*1.2 where empno=v_eno;
end if;
elsif v_dno=30 then
if v_empSal*1.3>5000 then
update emp set sal=5000 where empno=v_eno;
else
update emp set sal=sal*1.3 where empno=v_eno;
end if;
else
null;
end if;
end;
--循环结构
LOOP循环
declare
v_i number:=1;
begin
loop
dbms_output.put_line('v_i='||v_i);
exit when v_i>=3;
v_i:=v_i+1;
end loop;
end;
declare
v_i number:=1;
begin
while(v_i<=3) loop
dbms_output.put_line('v_i='||v_i);
v_i:=v_i+1;
end loop;
end;
declare
v_i number:=1;
begin
for v_i in reverse 1..3 loop
dbms_output.put_line('v_i='||v_i);
end loop;
end;
0 0
- PL/SQL编程基础
- pl/sql 编程入门
- pl/sql编程
- Oracle PL/SQL编程
- oracle pl/sql 编程
- pl/sql编程
- PL/SQL编程
- 《PL/SQL编程》
- PL/SQL编程笔记
- PL/SQL编程
- oracle pl/sql 编程
- pl/sql编程
- PL/SQL编程入门
- ORACLE PL/SQL编程
- Oracle PL/SQL编程
- oracle-pl/sql编程
- PL/SQL编程2
- PL/SQL编程3
- JVM总结 - 工具
- 【iOS开发】 中数组、集合、字典的使用(NSArray, NSSet, NSDictionary)
- 树莓派实战实例(一)安装规划
- JVM参数
- 什么是电平? 单片机怎么输出电平的?
- PL/SQL编程
- "crsctl check crs" command hangs at EVMD check
- SurfaceView中的PNG格式图片隐藏不见的原因-背景覆盖
- [leetcode 8] String to Integer (atoi)
- python -- 性能度量 timeit
- 布线问题
- 与Foglight同行 -- 写于Velocity大会 2014 Santa Clara
- Android调用系统拨号与调用系统打电话功能的区别
- 关于PHP文件下载中文文件