龙空技术网

Oracle PL/SQL编程之变量

郑大钱呀 246

前言:

今天小伙伴们对“oracle填充0”大体比较注重,小伙伴们都想要学习一些“oracle填充0”的相关内容。那么小编也在网摘上收集了一些有关“oracle填充0””的相关内容,希望咱们能喜欢,同学们一起来了解一下吧!

关于Oracle变量中的点变量必须要声明后才能使用,不能提前使用变量可以在任何程序块中、子程序(函数、存储过程)中使用变量的命名有规则:

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:1v_address:发财市发财路88888v_name:郑大钱v_birthday:
:= 为赋值的符号,当然还有其它为变量赋值的方式,我们后面再说not null 表示这个变量不能为空,必须在定义的时候就要为其赋值,相当于加了一个约束constant 关键字限制变量的值不能更改,也就是相当于定义了一个常量变量可以声明后,当没有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:2022v_address:发财市发财路88888v_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:1v_address:China'Tangv_name:Magic'Cv_birthday:

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

变量的常用基本数据类型

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

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

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

varchar是标准sql中定义的,而varchar2是oracle所提供的独有的数据类型,varchar对于汉字、全角等字符占两个字节,对于数字,英文字符是一个字节,占的内存小,对于空串,varchar仍按空串处理。

varchar2一般情况下把所有字符都占两字节处理,具体要看字符集情况。比如GBK,汉字就会占两个字节,英文1个;如果是UTF-8,汉字一般占3个字节,英文还是1个,此外varchar2是存放可变长度的字符串,VARCHAR2把空串等同于null处理。

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 completedv_name---------2022SQL> print v_namev_name---------2022SQL> 

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

大对象变量

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

CLOB:主要存储单字节的大对象BLOB:用于存储大的二进制对象变量名称命名规范建议v_变量名:普通变量c_变量名:常量p_变量名:替代变量g_变量名:全局变量

标签: #oracle填充0