Oracle PL/SQL编程之变量

郑大钱呀】【】【】【】,我们一起交流,一起学习。

关于Oracle变量中的点

  1. 变量必须要声明后才能使用,不能提前使用
  2. 变量可以再任何程序块中、子程序(函数、存储过程)中使用
  3. 变量的命名有规则:
1. 变量必须是英文字母开头,支持字母、数字、下划线、美元符号、#
2. 变量的名称最多30个字符
3. 变量名不能与数据库的表或列同名
4. 不能使用Oracle中的关键字
5. 变量不区分大小写,`v_id` 与`v_Id`是同一个变量

变量的声明与初始化

declare
  v_id       number(20) not null := 1;
  v_address  varchar2(50) :='发财市发财路88888';
  v_name     constant varchar2(10) :='郑大钱';
  v_birthday date;
begin
  dbms_output.put_line('v_id:'||v_id);
  dbms_output.put_line('v_address:'||v_address);
  dbms_output.put_line('v_name:'||v_name);
  dbms_output.put_line('v_birthday:'||v_birthday);
end;

输出结果如下:

v_id:1
v_address:发财市发财路88888
v_name:郑大钱
v_birthday:
  1. := 为赋值的符号,当然还有其它为变量赋值的方式,我们后面再说
  2. not null 表示这个变量不能为空,必须在定义的时候就要为其赋值,相当于加了一个约束
  3. constant 关键字限制变量的值不能更改,也就是相当于定义了一个常量
  4. 变量可以声明后,当没有not null约束的时候,不赋值也不会报错,不赋值的变量,Oracle会默认将其初始值设置为空。

建议在声明变量的时候,就为其初始化,否则如果在涉及计算的时候,任何的值与NULL计算的时候,结果都是NULL

值得注意的是,声明的变量每一行结束,都需要加;

变量的声明后重新赋值

declare
  v_id      number(20) not null := 1;
  v_address varchar2(50) := '发财市发财路88888';
  v_name constant varchar2(10) := '郑大钱';
  v_birthday date;
begin
  -- 对v_id 重新赋值
  v_id := '2022';
  dbms_output.put_line('v_id:' || v_id);
  dbms_output.put_line('v_address:' || v_address);
  dbms_output.put_line('v_name:' || v_name);
  dbms_output.put_line('v_birthday:' || v_birthday);
end;

执行结果如下:

v_id:2022
v_address:发财市发财路88888
v_name:郑大钱
v_birthday:

q’操作符

我们在之前说过,Oracle字符串都要放在两个单引号中,但是如果我们字符串中,包含单引号,这个时候该怎么办呢?此时就可以使用q'操作符,示例如下:

declare
  v_id      number(20) not null := 1;
  v_address varchar2(50) := q'@China'Tang@';
  v_name constant varchar2(10) := q'[Magic'C]';
  v_birthday date;
begin
  dbms_output.put_line('v_id:' || v_id);
  dbms_output.put_line('v_address:' || v_address);
  dbms_output.put_line('v_name:' || v_name);
  dbms_output.put_line('v_birthday:' || v_birthday);
end;

输出结果:

v_id:1
v_address:China'Tang
v_name:Magic'C
v_birthday:

我们从上面的中发现,q限bi定符后,一个使用了@,一个使用[,其实不限与这两个,这个定界符,可以指定任意的字符,只要它没有在字符中出现,都可以。

变量的常用基本数据类型

我们在声明变量的时候,需要指定变量的数据类型和长度,在Oracle中,数据的常用基本数据类型如下:

  1. varchar2(size): 不定长字符串类型,size为数据长度,最大32767个字符
  2. char(size): 定长字符串,size为数据长度,最大32767个字符
  3. number(p,s):数值类型,p为数值的位数,s为数值的精度。
  4. boolean: 布尔数据类型,一共三个值: TRUE、FALSE、NULL
  5. date: 日期类型
  6. timestamp:时间戳

char、varchar 和varchar2三者之间的区别:

  1. varchar是标准sql中定义的,而varchar2是oracle所提供的独有的数据类型,varchar对于汉字、全角等字符占两个字节,对于数字,英文字符是一个字节,占的内存小,对于空串,varchar仍按空串处理。
  2. varchar2一般情况下把所有字符都占两字节处理,具体要看字符集情况。比如GBK,汉字就会占两个字节,英文1个;如果是UTF-8,汉字一般占3个字节,英文还是1个,此外varchar2是存放可变长度的字符串,VARCHAR2把空串等同于null处理。
  3. char是一种固定长度的类型,无论存储的数据多少都会固定长度,如果插入的长度小于定义长度,则可以用空格进行填充。所以char可能更会浪费空间。

%TYPE数据类型

在编程中,我们变量最常用的是保存数据库里数据,这就要求数据库中数据要和变量的类型,如果我们通过去查询表结构去定义,就太麻烦了,Oracle提供了一种简便的方式,不需要查询表结构,只需要指定表的字段即可,示例如下:

declare
  -- 声明一个%Type类型的变量用来接收ename数据
  v_emp_name emp.ename%TYPE;
begin
  -- 使用select ... into ... 方式为emp赋值
  select ename into v_emp_name from emp where empno='7369';
  dbms_output.put_line('v_emp_name:' || v_emp_name);
end;

执行结果如下:

v_emp_name:SMITH

我们也可以使用%Type,引用自己的定义的变量,示例如下:

declare
  v_name varchar2(20):='郑大钱';
  v_name2 v_name%TYPE:='张三';
begin
  dbms_output.put_line('v_name:' || v_name);
  dbms_output.put_line('v_name2:' || v_name2);
end;

执行结果如下:

v_name:郑大钱
v_name2:张三

%Type属性的变量,不受限于NOT NULL约束

绑定变量(了解)

绑定变量又叫宿主变量,我们之前在语句块声明的变量,在程序运行后,就在内存中释放了,但是绑定变量不一样,在程序块执行完成后,变量依然可以访问,我们也可以理解成全局变量,示例代码如下:

SQL> variable v_name varchar2(20);
SQL> 
SQL> begin
  2    :v_name :='2022';
  3  end;
  4  /

PL/SQL procedure successfully completed

v_name
---------
2022

SQL> print v_name
v_name
---------
2022

SQL> 

引用绑定变量,需要在变量名前加上:

大对象变量

当要存储大量的数据时候,就需要大对象数据类型,主要为两种数据类型:BLOB、CLOB.

  1. CLOB:主要存储单字节的大对象
  2. BLOB:用于存储大的二进制对象

变量名称Oracle官方规范

  1. v_变量名:普通变量
  2. c_变量名:常量
  3. p_变量名:替代变量
  4. g_变量名:全局变量
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Oracle PL/SQLOracle数据库编程语言,它允许开发人员编写存储过程、触发器、函数和包等数据库对象,以实现更高效、安全和可靠的应用程序。以下是一些Oracle PL/SQL必知必会的知识点: 1. PL/SQL基础语法:包括变量定义、控制结构、循环语句、异常处理等。 2. 存储过程:存储过程是一组SQL语句的集合,可以在其中定义变量、使用控制结构、调用其他存储过程等。 3. 触发器:触发器是一种特殊的存储过程,它会在数据库表上的特定事件发生时自动执行一些操作。 4. 函数:函数是一种可以接受输入参数并返回结果的代码块,它可以用于处理数据、计算等操作。 5. 包:包是一种可以封装存储过程、函数和变量的方式,它可以提供更好的代码管理和组织。 6. 游标:游标是一种可以遍历查询结果集的机制,它可以用于在PL/SQL中处理大量数据。 7. 动态SQL:动态SQL是一种可以在运行时构建和执行SQL语句的机制,它可以提供更大的灵活性和自由度。 8. 性能优化:在编写PL/SQL代码时需要注意性能问题,如尽量避免使用循环、减少数据库访问次数等。 9. 安全性:在编写PL/SQL代码时需要注意安全问题,如避免SQL注入攻击、对敏感数据进行加密等。 以上是Oracle PL/SQL必知必会的一些知识点,掌握它们可以帮助开发人员更好地使用Oracle数据库进行应用程序开发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

郑大钱呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值