oracle_申明与赋值

发布于:2024-04-27 ⋅ 阅读:(24) ⋅ 点赞:(0)

1.格式

--1.程序块结构
declare
--申明部分
begin
--执行部分
end;

2.写一个空的程序块

--1.程序块结构
declare
--申明部分
begin
--执行部分
null;
end;

在控制台输出【hello world】

--2.简单的程序输入
DECLARE
--申明部分
BEGIN
--执行部分
dbms_output.put_line('hello world');
END;

3.定义变量 变量赋值 变量是可变的

--已知长度求周长
DECLARE
--申明部分
v_long number;
v_wide number;
v_perimeter number;
BEGIN
--执行部分
v_long:=5;
v_wide:4;
v_perimeter:=(v_long*v_wide)*2

--输出到控制台
dbms_output.put_line('v_perimeter =' || v_perimeter);
END;

--申明变量的时候可以直接赋值,赋初始值
DECLARE
--申明部分
v_long number:=5;
v_wide number:4;
v_perimeter number;
BEGIN
--执行部分
v_perimeter:=(v_long*v_wide)*2
--输出到控制台
dbms_output.put_line('v_perimeter =' || v_perimeter);
END;

变量是可变的

DECLARE
--申明部分
v_long number :=5;
v_wide number:4;
v_perimeter number;
BEGIN
--执行部分
v_long:=8;--改变v_long的值
dbms_output.put_line('v_long =' || v_long);--输出v_long的值
v_perimeter:=(v_long*v_wide)*2
--输出到控制台
dbms_output.put_line('v_perimeter =' || v_perimeter);--||是拼接的意思
END;

4.定义常量constant 常量赋值 常量是不可变的,必须赋初始值

--4定义常量constant 常量赋值 常量是不可变的,必须赋初始值
--已知半径求直径
declare 
v_pi constant number:=3.14;
v_r number :=3;
v_area number;
BEGIN
--执行部分
v_area:=v_pi*v_r*v_r;
dbms_output.put_line('v_area =' || v_area);--||是拼接的意思
END;

5.字符/日期数据类型的变量

declare 
--申明部分
v_name VARIANCE2(30):='lisi';
v_date date:=sysdate;
begin 
--执行部分
v_date:=to_date('20240422','yyyymmdd')
dbms_output.put_line('v_date =' || v_date);--||是拼接的意思
dbms_output.put_line('v_name =' || v_name);--||是拼接的意思

end;

6.隐式游标及其特性--只能返回一行数据,返回多行数据或者没有数据返回会报错

语法:select into(表里面的某个字段的某个值放到变量里)

--隐式游标及其特性--只能返回一行数据,返回多行数据或者没有数据返回会报错
--语法 select INTO(不能直接执行select into)
declare 
--申明部分
v_name varchar2(30);
v_sal number;
BEGIN
--执行部分
select ename,sal into v_name,v_sal from emp where emp=100;
dbms_output.put_line('v_name =' || v_name);
dbms_output.put_line('v_sal =' || v_sal);
dbms_output.put_line('姓名:' || v_name|| v_sal);
END;

--特性1.:返回多行数据会报错
declare 
--申明部分
v_name varchar2(30);
v_sal number;
BEGIN
--执行部分
select ename,sal into v_name,v_sal from emp ;
dbms_output.put_line('姓名:' || v_name|| v_sal);
END;


--特性2:没有数据返回会报错
declare 
--申明部分
v_name varchar2(30);
v_sal number;
BEGIN
--执行部分
select ename,sal into v_name,v_sal from emp where v_name='o' ;
dbms_output.put_line('姓名:' || v_name|| v_sal);
END;

--防止报错---加聚合函数
declare 
--申明部分
v_name varchar2(30);
v_sal number;
BEGIN
--执行部分
select max(ename),max(sal) into v_name,v_sal from emp ;
dbms_output.put_line('姓名:' || v_name|| v_sal);
END;

7.%type / %rowtype 定义数据类型

7.%type / %rowtype 定义数据类型
--%type:引用数据库中的某一列的数据类型或者某一个变量的数据类型
declare 
--申明部分
v_name emp.ename%type;
BEGIN
--执行部分
select ename into v_name from emp where emp=100;
dbms_output.put_line('v_name =' || v_name);
END;

--%rowtype:引用数据库中的一行(所有字段)作为数据类型
declare 
--申明部分
v_all emp%rowtype;
BEGIN
--执行部分
select ename into v_all.ename,v_all.sal from emp where emp=100;
dbms_output.put_line(v_all.ename|| v_all.sal );
END;


网站公告

今日签到

点亮在社区的每一天
去签到