学习笔记22/1/17

学习笔记

一、程序代码块

1.语法结构

--语法结构
DECLARE
  --声明的地方(声明变量、常量、游标等等),这一块可以省略
BEGIN
	-- 代码执行的逻辑块
  EXCEPTION
		--处理异常的逻辑
END;
  --程序结束声明
	
BEGIN
  DBMS_OUTPUT.put_line('HELLO WORLD');
END;	

一切语言都从hello world开始;

注:1.每写完一行代码后记得加上分号;
2.end最后一定要加上分号作为结束。

2.变量

(1)通过给定变量查询
DECLARE
        V_EMPNO NUMBER;
				V_ENAME VARCHAR2(30);
				V_SAL NUMBER;
BEGIN
        V_EMPNO :=7369;     --注意赋值语法
				
				SELECT T.ENAME,T.SAL          
				INTO V_ENAME,V_SAL
				
		/*		SELECT T.ENAME          变量插入数据要对应
				INTO V_ENAME
				
		*/
				FROM EMP T
				WHERE T.EMPNO = V_EMPNO;	
				
				DBMS_OUTPUT.put_line(V_EMPNO||' '||V_ENAME||' '||V_SAL);	
END;

定义变量需要注意的事:

    变量命名规则,一般都是 V_ 开头

1.声明/定义变量的时候,如果定义的是varchar类型的,那必须要给长度,
如果number类型的数据,可以给也可以不给,
如果是date类型的数据,就不用给长度;
2、定义了变量的长度之后,给这个变量赋值时不能超过该长度;
3、定义了什么类型的变量,赋值的时候就要赋什么类型的值;
4、定义了一个变量,结尾需要分号表示结束。

SELECT … INTO … 需要注意的点:

1、我们查询的结果 必须是一行数据 ,不能是0行或者多行;
2、INTO后面接的是变量,用处是将SELECT后查询出来的字段/列分别依次放到变量中;
3、INTO后面接的变量的顺序跟个数必须和SELECT后接的查询的字段的顺序和个数保持一致 。

eg:接收一个员工的编号(7788),将员工的姓名,
岗位,入职日期打印出来(DBMS_OUTPUT.put_line)

DECLARE 
          V_EMPNO NUMBER;
					V_ENAME VARCHAR2(10);
					V_JOB VARCHAR2(9);
					V_HIREDATE DATE;
BEGIN 
	V_EMPNO := 7788;
	
	SELECT E.ENAME
	       ,E.JOB
				 ,E.HIREDATE
	INTO V_ENAME
	     ,V_JOB
			 ,V_HIREDATE
	FROM EMP E  
	WHERE V_EMPNO = E.EMPNO;
	
	DBMS_OUTPUT.put_line(V_ENAME);
	DBMS_OUTPUT.put_line(V_JOB);
	DBMS_OUTPUT.put_line(V_HIREDATE);   --美式日期,日月年
	DBMS_OUTPUT.put_line(TO_CHAR(V_HIREDATE,'YYYY-MM-DD DAY'));
	--限定格式输出,加上星期几
END;
(2)通过输入变量查询(使用&符号)
DECLARE 
          V_EMPNO NUMBER;
          V_ENAME VARCHAR2(10);
          V_JOB VARCHAR2(9);
          V_HIREDATE DATE;
BEGIN 
	--& 这个符号的作用就是弹出一个数据传入窗口,
	--后面跟的文本信息“input_empno”时作为一个提示信息
  V_EMPNO := &input_empno;
  
  SELECT E.ENAME
         ,E.JOB
         ,E.HIREDATE
  INTO V_ENAME
       ,V_JOB
       ,V_HIREDATE
  FROM EMP E  
  WHERE V_EMPNO = E.EMPNO;
  
  DBMS_OUTPUT.put_line(V_ENAME);
  DBMS_OUTPUT.put_line(V_JOB);
  DBMS_OUTPUT.put_line(V_HIREDATE);   --美式日期,日月年
  DBMS_OUTPUT.put_line(TO_CHAR(V_HIREDATE,'YYYY-MM-DD DAY'));
  --限定格式输出,加上星期几
END;

SELECT * FROM EMP;

注意:

  • 手动输入类型的时候输入数据的时候应该注意输入的类型
  • 如输入VARCHAR2类型的时候应该加上单引号,
  • 输入date类型的时候应该使用to_date函数,不能直接输入number类型的数据

eg:

DECLARE
 V_STR VARCHAR2(30);
 V_DATE DATE;
 V_NUM  NUMBER;
BEGIN
	V_STR := &INPUT_STR;   --输入的时候要加上单引号
	V_DATE := &INPUT_DATE;  --输入的时候要转换为日期类型
	--to_date()函数
	V_NUM := &INPUT_NUM;
	
	DBMS_OUTPUT.put_line(V_STR);
	DBMS_OUTPUT.put_line(V_DATE);
	DBMS_OUTPUT.put_line(V_NUM);
END; 

eg:根据输入的员工编号,输出员工的奖金,若为空则输出0;

DECLARE
 V_EMPNO VARCHAR2(4);
 V_COMM NUMBER;
BEGIN
	V_EMPNO := &input_empno;   
	
	SELECT E.COMM
	INTO V_COMM
	FROM EMP E
	WHERE E.EMPNO = V_EMPNO;
	
	DBMS_OUTPUT.put_line(NVL(V_COMM,0));
END;  
(3)变量声明类型
  • %type
  • %rowtype
  • 常量 constant
a.%type
  • %type : 可以用来确定数据类型
    eg:根据输入的员工编号,输出员工的奖金,若为空则输出0;
DECLARE
 V_EMPNO EMP.EMPNO%TYPE;
 V_COMM EMP.COMM%TYPE;
BEGIN
	V_EMPNO := &input_empno;   
	
	SELECT E.COMM
	INTO V_COMM
	FROM EMP E
	WHERE E.EMPNO = V_EMPNO;
	
	DBMS_OUTPUT.put_line(NVL(V_COMM,0));
END;  
b.%rowtype
  • %rowtype:引用数据库中的一个表所有字段的数据类型和长度;

eg:根据输入的员工编号,输出员工的奖金,若为空则输出0;

DECLARE
 V_EMP EMP%ROWTYPE;
BEGIN
	V_EMP.EMPNO := &input_empno;   
	
	SELECT E.COMM
	INTO V_EMP.COMM
	FROM EMP E
	WHERE E.EMPNO = V_EMP.EMPNO;
	
	DBMS_OUTPUT.put_line(NVL(V_EMP.COMM,0));
END; 

注意:

  • 当使用%rowtype时,相当于使用了一整张表的字段名作为变量进行了变量的声明,使用变量的时候要注意使用对应字段的变量名称(即使用 V_EMP.字段名 来调用),这里如果不采用这种形式来调用或者有漏写一两个字符就会报错;

eg:用%TYPE声明变量类型, 打印出工号为 7698 的工作, 名字 部门编号;

DECLARE 
  V_EMPNO EMP.EMPNO%TYPE := 7698;
	V_ENAME EMP.ENAME%TYPE;
	V_DEPTNO EMP.DEPTNO%TYPE;
	
BEGIN
  	SELECT E.ENAME
		       ,E.DEPTNO
		INTO   V_ENAME
		       ,V_DEPTNO
		FROM EMP E
		WHERE E.EMPNO = V_EMPNO;
		
		DBMS_OUTPUT.put_line(V_ENAME);
    DBMS_OUTPUT.put_line(V_DEPTNO);
END;

eg:用%ROWTYPE声明变量类型,打印出工号为 7698 的工作, 名字 部门编号;

DECLARE 
  V_EMP EMP%ROWTYPE;

BEGIN
	V_EMP.EMPNO := 7698;
	
	SELECT E.JOB
	       ,E.ENAME
				 ,E.DEPTNO
	INTO   V_EMP.JOB
	       ,V_EMP.ENAME
				 ,V_EMP.DEPTNO
	FROM EMP E
	WHERE V_EMP.EMPNO = E.EMPNO;
	
	DBMS_OUTPUT.put_line(V_EMP.JOB);
  DBMS_OUTPUT.put_line(V_EMP.ENAME);
	DBMS_OUTPUT.put_line(V_EMP.DEPTNO);
	
END;

c.常量(CONSTANT)

常量在声明时赋予初值,整个生命周期内不能再进行更改;

  • 使用的时候用 CONSTANT 关键字声明常量;

eg:计算圆的面积;

DECLARE
  PI   CONSTANT NUMBER := 3.14; --圆周率长值  ①
  R    NUMBER := 3; --圆的半径默认值3  ②  
  --R    NUMBER := 3; 
  AREA NUMBER; --面积。

BEGIN
  R := 5;
  AREA := PI * R * R; --计算面积 78.5
  DBMS_OUTPUT.PUT_LINE(AREA); --输出圆的面积  78.5
  
  R := 6;
  AREA := PI * R * R; --计算面积  113.04
  DBMS_OUTPUT.PUT_LINE(AREA); --输出圆的面积
END;

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值