--PLSQL编程
--是Oracle在标准的sql语言上的扩展
--特点:可以在数据库定义变量,常量,还可以使用条件,判断,循环,语句以及异常等等
--plsql 程序的组成部分
--声明部分,执行部分 异常处理部分
DECLARE --声明部分
--在此声明plsql用到的常量,变量,类型
BEGIN --执行
--过程及sql语句
EXCEPTION
--执行异常:错误处理
END;
--1.简单的plsql块
DECLARE --声明并赋值 变量名 类型 :=值 :=赋值 =条件判断
V_NUM NUMBER :=10;
BEGIN --执行
V_NUM :=V_NUM+1;
DBMS_OUTPUT.PUT_LINE('NUM:'||V_NUM); --\\拼接符
END;
--2.声明变量,赋值为员工表中的smith员工的编号
--SELECT ....INTO..
DECLARE
V_NUM NUMBER;
BEGIN
SELECT EMPNO INTO V_NUM FROM EMP WHERE ENAME ='SMITH';
DBMS_OUTPUT.PUT_LINE('NUM: ' ||V_NUM);
END;
--3.声明变量,变量的类型是SCOTT用户下emp表empno字段的字段类型 %type
DECLARE
V_NUM SCOTT.EMP.EMPNO%TYPE;
BEGIN
SELECT EMPNO INTO V_NUM FROM EMP WHERE ENAME ='SMITH';
DBMS_OUTPUT.PUT_LINE('NUM: '||V_NUM);
END;
--4.取一行数据 %rowtype
DECLARE
V_EMPROW SCOTT.EMP%ROWTYPE;
BEGIN
SELECT * INTO V_EMPROW FROM EMP WHERE ENAME ='SMITH';
DBMS_OUTPUT.PUT_LINE(V_EMPROW.ENAME||V_EMPROW.EMPNO);
END;
--5.常量
DECLARE
C_PT CONSTANT NUMBER :=3.1415926; --CONSTANT 常量,一旦设定不能更改 命名规范:C_
V_R NUMBER :=20;
V_AREA NUMBER;
BEGIN
V_AREA :=C_PT*V_R*V_R;
DBMS_OUTPUT.PUT_LINE('V_AREA: '||V_AREA);
END;
--是Oracle在标准的sql语言上的扩展
--特点:可以在数据库定义变量,常量,还可以使用条件,判断,循环,语句以及异常等等
--plsql 程序的组成部分
--声明部分,执行部分 异常处理部分
DECLARE --声明部分
--在此声明plsql用到的常量,变量,类型
BEGIN --执行
--过程及sql语句
EXCEPTION
--执行异常:错误处理
END;
--1.简单的plsql块
DECLARE --声明并赋值 变量名 类型 :=值 :=赋值 =条件判断
V_NUM NUMBER :=10;
BEGIN --执行
V_NUM :=V_NUM+1;
DBMS_OUTPUT.PUT_LINE('NUM:'||V_NUM); --\\拼接符
END;
--2.声明变量,赋值为员工表中的smith员工的编号
--SELECT ....INTO..
DECLARE
V_NUM NUMBER;
BEGIN
SELECT EMPNO INTO V_NUM FROM EMP WHERE ENAME ='SMITH';
DBMS_OUTPUT.PUT_LINE('NUM: ' ||V_NUM);
END;
--3.声明变量,变量的类型是SCOTT用户下emp表empno字段的字段类型 %type
DECLARE
V_NUM SCOTT.EMP.EMPNO%TYPE;
BEGIN
SELECT EMPNO INTO V_NUM FROM EMP WHERE ENAME ='SMITH';
DBMS_OUTPUT.PUT_LINE('NUM: '||V_NUM);
END;
--4.取一行数据 %rowtype
DECLARE
V_EMPROW SCOTT.EMP%ROWTYPE;
BEGIN
SELECT * INTO V_EMPROW FROM EMP WHERE ENAME ='SMITH';
DBMS_OUTPUT.PUT_LINE(V_EMPROW.ENAME||V_EMPROW.EMPNO);
END;
--5.常量
DECLARE
C_PT CONSTANT NUMBER :=3.1415926; --CONSTANT 常量,一旦设定不能更改 命名规范:C_
V_R NUMBER :=20;
V_AREA NUMBER;
BEGIN
V_AREA :=C_PT*V_R*V_R;
DBMS_OUTPUT.PUT_LINE('V_AREA: '||V_AREA);
END;