打开系统输出 set serveroutput on; 只需要打开一次
**书写格式 以斜杠/号 结束(基本结构)
--declare --语句后面必须以;号结束
declare
--用来区分变量名和表里的名 接受查询的结果
--声明变量,游标,类型
v_name varchar2(50);
--begin //相当于大括号
--两种赋值方式 --注释
--v_name:='张三';
v_name:='&输入name的值'
--输出
--||双竖线用来连接字符串
--输出语句 line 是换行
dbms_output.put_line('你输入的姓名是:'||v_name);
--put 能输出,会被缓存,只有遇到put_line (换行)才会全部输出
dbms_output.put('你输入的姓名是:'||v_name);
--end;
plsql相关知识点:
1.声明一个变量,使它的类型与某个变量或数据库基本表中某个列的数据类型一致。
(不知道该变量或列的数据类型)可以使用 %TYPE 。

DECLARE
         Teacher_name CHAR(5);
         Student_name Teacher_name%TYPE;
……END
BEGIN 

2.plsql的记录集类型一共分为四种类型
** 题目:告诉部门编号,告诉平均工资 同一个表
--列类型 第一种

declare 
--v_deptno number(10);
--取sal一列的类型当做变量的类型  表名.列名%type
v_deptno emp.deptno%type;
--v_avgsal number(10,2);
--取sal一列的类型当做变量的类型  表名.列名%type
v_avgsal emp.sal%type;  
begin 
v_deptno:=&deptno;
--只能保存一个结果
select avg(sal) into v_avgsal from emp where deptno=v_deptno;
dbms_output.put_line('平均工资'||v_avgsal);
end;

--行类型 第二种

declare
emp_row emp%rowtype;
begin 
--选取员工号7788 的一行 存入变量emp_row中
select * into emp_row from emp where empno=7788;
dbms_output.put_line('姓名:'||emp_row.ename);
dbms_output.put_line('职位:'||emp_row.job);

end;

--记录集类型 第三种

--输入一个员工编号,输出他的姓名,职位,薪水 还有部门的名称
declare 
--声明一个记录集类型
type myRecord is record
(
--四个属性 (变量名 数据类型)
ename emp.ename%type,
--变量名与表里面的名无关,随便命名
job emp.job%type,
sal emp.sal%type,
dname dept.dname%type
);
--声明一个变量(变量名  类型;)
myrow myRecord;
begin
select ename,job ,dname into myrow from emp e
inner join  dept d
on e.deptno =d.deptno
where empno=7788;
dbms_output.put_line('姓名'||myrow.ename);--记录集中声明的变量名ename
dbms_output.put_line('职位'||myrow.job);--记录集中声明的变量名job
dbms_output.put_line('薪水'||myrow.sal);--记录集中声明的变量名sal
dbms_output.put_line('部门'||myrow.dname);--记录集中声明的变量名dname
end;

--游标类型 第四种

declare 
type mycursor is ref cursor; 
mycur mycursor;
emprow emp%rowtype;
begin 
open mycur for select * from emp where deptno=10;
loop 
fetch mycur into emprow;
exit when mycur%notfound;
dbms_output.put_line(emprow.ename||' '||emprow.job||' '||emprow.hiredate);
end loop;
close mycur;
end;

最新文章

  1. Codeforces Round #380(div 2)
  2. Linux电源管理(11)_Runtime PM之功能描述
  3. PowerDesigner生成SQL脚本时,对象带有双引号的问题解决
  4. 分布式发布订阅消息系统 Kafka 架构设计
  5. 一个中型项目:本地校园App
  6. dojo.byId、dojo.query、dojo.attr
  7. POJ1087 A Plug for UNIX 【最大流】
  8. 专业MySQL数据库管理专家SQL Manager for MySQL发布5.4版本
  9. 【原生js】js动态添加dom,如何绑定事件
  10. 为开源社区尽一份力,翻译RocketMQ官方文档
  11. SDP(2):ScalikeJDBC-Connection Pool Configuration
  12. Algorithm --> 字符串中最长不重合子串长度
  13. mouseover,mouseout和mouseenter,mouseleave的区别及适用情况
  14. 苹果新的编程语言 Swift 语言进阶(十一)--实例的初始化与类的析构
  15. java的lamda表达式
  16. Restful API学习Day4 - DRF版本控制和认证
  17. angular 2 - 003 typescript
  18. JAVA中MAP转LIST
  19. mysql my.cnf 或my.ini配置文件参数解释(转):
  20. mongodb replica set 和 nodejs中使用mongoose连接replica

热门文章

  1. Seafile安装踩坑
  2. 关于Oracle、SqlServer 的sql递归查询
  3. Spring学习(20)--- Schema-based AOP(基于配置的AOP实现) -- 配置切入点pointcut
  4. angular嵌入注入服务实例
  5. 用javascript实现java的Map
  6. Realm的简单使用
  7. JAVA WEBSERVICE服务端&客户端的配置及调用(基于JDK)
  8. Java NIO 学习笔记五 缓冲区补充
  9. C#继承的执行顺序
  10. 根据list得到list中的最大值最小值