PL SQL初次学习

 

 

之前一直没有学习过PL SQL的开发,后看了一段讲解的视频稍有了点了解。

使用PL SQL DEVELOPER进行开发,编写pl sql主要使用test窗口。

--test窗口
begin
	DBMS_OUTPUT.PUT_LINE('HELLO WORLD');
end;
--进行打印
sqlplus 默认不打印
set serveroutput on; --开启打印
--普通变量
DECLARE
	V_NAME VARCHAR2(20) := '张三';
	v_sal number;
	v_addr varchar2(2000);
begin
	v_sal := 20000;
	select 'china' into v_addr from dual;
	DBMS_OUTPUT.PUT_LINE('name:'||v_name||' sal:'||v_sal||', addr:'||v_addr);
end;

--引用型变量
DECLARE
	V_NAME  emp.ename%type;
	v_sal emp.sal%type;
begin
	select ename,sal into v_name,v_sal from emp fetch first 1 rows only;
	DBMS_OUTPUT.PUT_LINE('name:'||v_name||' sal:'||v_sal);
end;

--记录型变量,引用表中一整行的内容
DECLARE
	v_emp  emp%rowtype;
begin
	select * into v_emp from emp fetch first 1 rows only;
	DBMS_OUTPUT.PUT_LINE('name:'||v_emp.ename||' sal:'||v_emp.sal);
end;

--判断分支
DECLARE
	v_sal emp.sal%type;
begin
	select sal into v_name,v_sal from emp where ename ='张三';
	if sal > 10000 then
		DBMS_OUTPUT.PUT_LINE(v_sal||' 蛮多的');
	elsif sal > 5000 then
		DBMS_OUTPUT.PUT_LINE(v_sal||' 还凑合');
	else		
		DBMS_OUTPUT.PUT_LINE(v_sal||' 唉');
	end if;	
end;

--loop 循环
DECLARE
	v_num number := 1;
begin
	loop
	exit when v_num > 10;		--退出条件	
		DBMS_OUTPUT.PUT_LINE(v_num);
		v_num := v_num+1;
	end loop;
end;

--游标:cursor 声明 打开 读取 关闭
--cursor 游标名(参数列表) is subquery;
--open 游标名;
--fetch 游标名 into 变量列表;
--close 有标名;
--属性
--rowcount --获取fetch语句返回的行数
--found --有数据为真
--notfound --与found相反;
--isopen --打开为真


declare
	cursor v_cursor  is select ename,sal from emp;
	v_name emp.ename%type;
	v_sal emp.sal%type;
begin
	open v_cursor;
	loop
	exit when v_cursor%notfound;
	
	
	fetch v_cursor into v_name ,v_sal;
	DBMS_OUTPUT.PUT_LINE('name:'||v_emp.ename||' sal:'||v_emp.sal);
	
	end loop;
	close v_cursor;
end;

--带参游标
declare
	v_cursor(v_deptno emp.deptno%type) cursor is select ename,sal from emp where deptno = v_deptno;
	v_name emp.ename%type;
	v_sal emp.sal%type;
begin
	open v_cursor(10);
	loop
	--fetch 语句放在判断结束条件之前	
	fetch v_cursor into v_name ,v_sal;	
	DBMS_OUTPUT.PUT_LINE('name:'||v_emp.ename||' sal:'||v_emp.sal);
	
	exit when v_cursor%notfound;
	
	end loop;
	close v_cursor;
end;

--存储过程
create or replace procedure  name is 
begin
end name;

--无参存储过程
--plsql > program window > procedure
create or replace procedure p_hello as
begin
	DBMS_OUTPUT.PUT_LINE('hello world');
end p_hello;
--test window 调用
begin
	--存储过程名
	p_hello;
end;
--sqlplus 调用
set serveroutput on; --开启打印
exec p_hello;

--有参存储过程
create or replace procedure p_print(in_empno in  emp.empno%type) as
	v_name emp.ename%type;
	v_sal emp.sal%type;
begin
	select ename,sal into v_name,v_sal from emp where empno = in_empno;
	DBMS_OUTPUT.PUT_LINE('name:'||v_name||' sal:'||v_sal);
end p_print;

create or replace procedure p_outname(in_empno in emp.empno%type,out_ename out emp.ename%type) as 
begin 
	select ename into out_ename from emp where empno = in_empno;
end p_outname;

--调用
--test window
declare
	v_name emp.ename%type;
begin
	p_outname(7566,v_name);
	DBMS_OUTPUT.PUT_LINE(v_name);
end;
--

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值