首先安装plsql工具官网下载地址:https://www.allroundautomations.com/registered/plsqldev.html
PLSQL语法结构
Declare
声明部分---声明变量、常亮、复杂数据类型、游标等
Begin
执行PL/SQL语句和SQL语句
Exception
异常处理部分
End;
块结束标记
红色为必须模块
DECLARE
v_name VARCHAR2(10);
v_sal NUMBER(7,2);
v_hiredate DATE;
c_tax_rate CONSTANT NUMBER(3,2) := 0.02;
v_tax_sal NUMBER(7,2);
v_valid BOOLEAN DEFAULT TRUE;
BEGIN
SELECT ename,sal,hiredate
into v_name,v_sal,v_hiredate
from emp
WHERE empno = 7369;
--计算所得税
v_tax_sal := v_sal * c_tax_rate;
--打印 打印输出语句
DBMS_OUTPUT.PUT_LINE(v_name||'的工资:'||v_sal||'日期是:'||v_hiredate||'所得税是:'||v_tax_sal);
IF v_valid THEN
DBMS_OUTPUT.PUT_LINE('已核实');
END IF;
END;
说明:into 把数据查出来的数据赋值给定义的变量
:= :给常量或变量赋值
变量类型
引用型变量
DECLARE
--引用型变量 把数据库类型直接赋值给变量
v_name emp.ename%TYPE;
v_sal emp.sal%TYPE;
BEGIN
SELECT ename,sal
INTO v_name,v_sal
from emp
WHERE empno = 7788;
DBMS_OUTPUT.PUT_LINE(v_name||'工资是:'||v_sal);
END;
记录型变量
DECLARE
--定义记录型变量
emp_recode emp%ROWTYPE;
BEGIN
--将7788的员工信息全部赋值给记录型变量emp_recode
SELECT *
INTO emp_recode
FROM emp
WHERE empno = 7788;
--打印薪水和姓名
DBMS_OUTPUT.PUT_LINE(emp_recode.ename||'的工资:'||emp_recode.sal);
END;
运算符
--算数运算
DECLARE
v_num1 NUMBER(3) :=10;
v_num2 NUMBER(3) :=2;
BEGIN
DBMS_OUTPUT.PUT_LINE(v_num1 + v_num2);--加
DBMS_OUTPUT.PUT_LINE(v_num1 - v_num2);--减
DBMS_OUTPUT.PUT_LINE(v_num1 * v_num2);--乘
DBMS_OUTPUT.PUT_LINE(v_num1 / v_num2);--除
DBMS_OUTPUT.PUT_LINE(v_num1 ** v_num2);--乘方
END;
--关系运算符
DECLARE
v_num1 NUMBER(2) := &n1; --&n1替代变量 运行时在界面输入值
v_num2 NUMBER(2) := &n2;
BEGIN
IF(v_num1 > v_num2)THEN
DBMS_OUTPUT.PUT_LINE('v_num1大于v_num2');
ELSIF(v_num1 = v_num2)THEN
DBMS_OUTPUT.PUT_LINE('v_num1等于v_num2');
ELSIF(v_num1 < v_num2)THEN
DBMS_OUTPUT.PUT_LINE('v_num1小于v_num2');
END IF;
if (v_num1 <> v_num2) THEN --不等于或者!=
DBMS_OUTPUT.PUT_LINE('v_num1不等于v_num2');
END IF;
END;
--比较运算符
DECLARE
v_num NUMBER(2) := &n1;
BEGIN
IF(v_num BETWEEN 5 AND 10)THEN
DBMS_OUTPUT.PUT_LINE('v_num在5-10之间');
ELSE
DBMS_OUTPUT.PUT_LINE('v_num不在5-10之间');
END IF;
IF(v_num IN(3,8,10))THEN
DBMS_OUTPUT.PUT_LINE('v_num在3,8,10中');
ELSE
DBMS_OUTPUT.PUT_LINE('v_num不在3,8,10中');
END IF;
IF(v_num IS NULL)THEN
DBMS_OUTPUT.PUT_LINE('v_num是null');
ELSE
DBMS_OUTPUT.PUT_LINE('v_num不是null');
END IF;
END;