PL/SQL编程
declare
begin
dbms_output.put_line('helloworld!');
-- line表示换行
end;
set serveroutput on; 开启打印输出
/ 表示结束
变量的声明与赋值
declare
v_name varchar2(20) := '张三';
v_sal number;
v_addr varchar2(200);
begin
-- 直接赋值
v_sal := 1111;
-- 语句赋值
select '字节跳动' into v_addr from dual;
-- 打印输出
dbms_output.put_line(v_name || ' ' || v_sal || ' ' || v_addr);
end;
引用类型的变量
变量的类型和长度取决于 表中字段的类型和长度
表名.列名%type
记录类型的变量
表名%rowtype
条件分支
declare
v_count number;
begin
select count(1) into v_count from emp;
if v_count > 20 then
dbms_output.put_line(v_count);
elsif v_count >= 10 then
-- elseif 少了一个e elsif
dbms_output.put_line(v_count);
else
dbms_output.put_line(v_count);
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;
无参游标
用于临时存储一个查询返回的多行数据
声明、打开、读取、关闭
--使用游标查询emp表中的所有员工的姓名和工资并且打印出来
declare
cursor c_emp is select ename,sal from emp;
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
open c_emp;
loop
fetch c_emp into v_ename,v_sal;
exit when c_emp%notfound;
dbms_output.put_line(v_ename||' '||v_sal);
end loop;
close c_emp;
end;
带参游标
--使用游标查询emp表中的所有员工的姓名和工资并且打印出来
declare
cursor c_emp(v_deptno emp.deptno%type) is select ename,sal from emp where deptno = v_deptno;
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
open c_emp(10);
loop
fetch c_emp into v_ename,v_sal;
exit when c_emp%notfound;
dbms_output.put_line(v_ename||' '||v_sal);
end loop;
close c_emp;
end;