PL/SQL 知识 (个人笔记)(一)

13 篇文章 1 订阅

PL/SQL 知识 (个人笔记)(一)

1.基本架构

declare
--声明部分,比如变量定义,常量定义及赋值;
begin
--需要执行的代码,比如输出数据,数据的增删改查, DML, DDL都可以
end;

2.变量和常量

变量:

内容可变,在程序运行过程中,可以随时赋值,即变量的内容是可以改变的,所以叫变量;变量一般以v_开头: v_empname varchar2(50);

常量:

一旦定义赋值之后,值不能再改变;常量一般以c_开头,定义时需要加constant关键字: c_empno constant number(4);

3.打印信息

dbms_output.put_line();

括号中可以是列名,即把这一列数据的第一行打印;
括号中还可以是具体的数据,比如字符串(需要单引号),比如数字,比如时间等等.

**

4.赋值

**
语法:
变量名 :=值;
常量名 :=值;

范例:

v_empname varchar2(50) :='ABC';
c_empno constant number(4) :=1234;

5.注释:

1.单行注释

代码前加–,此时代码会变红色,表名此行代码被注释掉,不会执行

2.多行注释

第一行代码前加/最后一行代码后加/,中间就是被注释掉的部分,程序运行是不会执行;

declare
 v_v1 number(5) :=10;
 c_c1 constant varchar2(20) :='ABC';
begin
   dbms_output.put_line('v_v1: '||v_v1);
   dbms_output.put_line('c_c1: '||c_c1);
   dbms_output.put_line('今天是2月12日');
   dbms_output.put_line(trunc(sysdate));
   v_v1:=20;
   dbms_output.put_line('v_v1:'||v_v1);
   c_c1 :='TEST';
   dbms_output.put_line('c_c1:'||c_c1);
end;

6.使用表中的类型:

(1).%type:沿用表中某一列的类型和长度:v_empno emp.empno%type;
(2).%rowtype:沿用一张表的数据类型,即变量跟表一样,表中有多少列,变量中就有多少列:v_emp emp%rowtype;
(3).代码块中查询时,需要定义一个变量承接查询出的数据,然后打印变量,方可将查询结果打印出来. 输出时,每次只能输出一行,所以查询时要加限制;

create table test_0212
(
       name1 varchar2(50),
       age1 number(3)
);

insert into test_0212 values('A',1);
insert into test_0212 values('B',2);
insert into test_0212 values('C',3);
insert into test_0212 values('D',4);
insert into test_0212 values('E',5);
commit;

select * from test_0212;

declare
–声明部分,定义变量
v_empno emp.empno%type;
v_emp emp%rowtype;

begin
--代码执行部分
/*insert into  test_0212 values('F',6);
commit;*/
/*delete from test_0212 where name1='A';
commit;*/
/*
update test_0212 set age1=10 where name1='B';
commit;*/
select empno into v_empno from emp where rownum<2;
dbms_output.put_line(v_empno);

select * into v_emp  from emp where rownum<2;
dbms_output.put_line('empno:'||v_emp.empno||' ename:'||v_emp.ename||' sal:'||v_emp.sal);

end;

7.自定义类型:

语法:

type 类型名 is record
(
	列名1 类型(长度),
	列名2 类型(长度),
	列名3 类型(长度)
);

范例:

declare 
type t_type is record
(
     name1 varchar2(50),
     job1 varchar2(50)
);
v_d t_type;
begin
  select ename, job into v_d from emp where rownum<2;
  dbms_output.put_line('ename:'||v_d.name1||','||'job:'||v_d.job1);
end;

注意:
(1):类型定义时,类型名以t_开头;
(2):定义变量语法: 变量名 类型名;–此处意为 变量拥有类型相同的列和属性
(3):变量打印时,列明须保持跟类型内的列名一致: 变量名.列名

8.键盘输入信息:

键盘输入:
&提示信息: &表示将要从键盘输入,提示信息为表明输入的信息内容;

方法1:
用一个变量承接键盘输入:

declare
v_name emp.ename%type;
v_empno number(20) := &编号;
begin
  select ename into v_name from emp where empno=v_empno;
  dbms_output.put_line(v_name);
end;

方法2:
直接用列名承接键盘输入:

declare
v_name emp.ename%type;
begin
  select ename
    into v_name
    from emp
   where empno = &empno;
  dbms_output.put_line(v_name);
end;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yang_z_1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值