db_oracel_plsql数据库操作基本指令

本文详细介绍Oracle数据库中存储过程及函数的创建与使用方法,包括添加、删除、修改记录等操作,并通过具体实例展示了如何利用存储过程进行数据操作及查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--存储过程

--存储过程---添加
--编写一个存储过程,该过程可以向某张表里添加记录
--1、创建一个表
create table t_basic_user_info
(name varchar2(20),
adress varchar2(20)
);
--2、创建一个存储过程
create procedure pd_insert is
begin
insert into t_basic_user_info values('testing','waiyundasha');
end;
--执行
--存储过程---删除
create procedure pd_shanchu is
begin
delete from t_basic_user_info;
end;
/*
如果是create or replace 的话就是创建或者替换一个新的存储过程
查找错误的命令式:show error
调用存储过程
1)exec 过程名(参数.....)
2)call 过程名(参数.....)
*/
--存储过程---修改
--修改用户信息
create procedure pd_xiugai is
begin 
update t_temp_emp set sal=2000.00 where ename='SMITH';
end;
--过程删除
drop procedure pd_xiugai;

--查出t_temp_emp表中7782工号的人的姓名
declare
v_name varchar2(20);
begin
select ename into v_name from t_temp_emp where empno='7782';
dbms_output.put_line('yuangong 7782 de gong zi shi:'||v_name);
end;
--输入empno,查询出对应的员工的姓名和工资
set serveroutput on   --打开输出服务
declare
v_ename varchar2(20);
v_sal number(7,2);
begin
select ename,sal into v_ename,v_sal from t_temp_emp where empno=&bb;
dbms_output.put_line('用户姓名是:'||v_ename ||'工资是:'||v_sal);
exception
when no_data_found then
dbms_output.put_line('empno输入错误');
end;

--Oracle函数

--1、concat、length函数
set serveroutput on
declare
result1 varchar2(20);
result2 varchar2(20);
begin
select concat('hello,','every one') into result1 from dual;
select length('this is a test') into result2 from dual;
dbms_output.put_line('result1 is:'||result1);
dbms_output.put_line('result2 is:'||result2);
end;
--2、函数转换to_char to_date to_number
declare
result1 varchar2(30);           
result2 varchar2(30);          
result3 date;           
result4 number;
begin
   select to_char(99) into result1 from dual;
   select to_char(sysdate)  into result2 from dual;
   select to_date('20080916','yyyy-mm-dd') into result3 from dual;
   select to_number('$1234.56','$9999.99') into result4 from dual;
   dbms_output.put_line('result1 is :'||result1);
   dbms_output.put_line('result2 is :'||result2);
   dbms_output.put_line('result3 is :'||result3);
   dbms_output.put_line('result4 is :'||result4);
end; 
--3、时间函数
declare
result1 date;
result2 timestamp;
begin
select sysdate into result1 from dual;
select systimestamp into result2 from dual;
dbms_output.put_line('当前时间:'||result1);
dbms_output.put_line('时间戳:'||result2);
end;
--4、分组函数
declare
result1 number(10,2);
result2 number(10,2);
result3 number(10,2);
result4 number(10,2);
result5 number(10,2);
begin
select avg(sal) into result1 from emp;
select count(sal) into result2 from emp;
select max(sal) into result3 from emp;
select min(sal) into result4 from emp;
select sum(sal) into result5 from emp;
dbms_output.put_line('平均工资是:'||result1);
dbms_output.put_line('员工总数是:'||result2);
dbms_output.put_line('最高工资是:'||result3);
dbms_output.put_line('最低工资是:'||result4);
dbms_output.put_line('工资总额是:'||result5);
end;

--5、创建函数
--创建一个函数,按照他的姓名查出他的年薪:

create function hanshu(hname varchar2) return number is yearsal number(10,2);
begin
select (sal+nvl(comm,0))*12 into yearsal from emp where ename=hname;
return yearsal;
end;
/*函数调用
1、先定义一个变量
var abc number;
2、调用函数,call 后面跟函数名,函数名后面跟的是ename的员工姓名。
call hanshu('SCOTT') into:abc;*/
--创建一个函数,按照输入的人的名字查找他对应的职位?

create function hs(hname varchar2) return varchar2 is hsjob varchar2(9);
begin
select job into hsjob from emp where ename=hname;
return hsjob;
end;

var bbb varchar2;
call hs('SMITH') into:bbb;
/*游标
1、声明
2、打开
3、调用
4、关闭*/
declare     
   v_name	emp.ENAME%type;
   v_sal	emp.SAL%type;
   v_deptno 	emp.DEPTNO%type;
cursor mycursor is 
select ename,sal from emp where deptno=v_deptno;
begin
	v_deptno :='20';
	open mycursor;
	fetch mycursor into v_name,v_sal;
	close mycursor;
	dbms_output.put_line(v_name ||'''s salary is '''||v_sal);
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值