`
greemranqq
  • 浏览: 975494 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

PL/SQL 数据类型与定义、赋值(二)

 
阅读更多
1.简单变量类型与定义
  sql 与pl/sql 通用变量类型:
  varchar2(max_length) 最大4000字节
  char(max_length)       最大2000字节
  number(x,y)              最长x位,y位小数
  date                          7个字节,默认格式DD-Mon-yy
  如:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;     
  注意:dual 是只有一行一列的伪表,sys下,方便查询,时间分钟mi和mm 都可行
  pl/sql 专用变量类型:

  boolean        true/false/null
  binary_integer 整数
  变量的定义赋值用:“:=” 
  比如:
  declare
	v_gender char(1);
	v_count binary_integer :=0;
	v_totle_sal number(7,2) :=0;
	v_date date :=sysdate+7;	-- 默认加的天数
	c_pi constant number(3,2) :=3.14; -- 常量
	c_vaild boolean not null :true;	  -- 变量不为null
   begin 
	dbms_output.put_line('Hello!');
   end;

 

2.复合变量(组合变量)
  A 表类型(一列数据):类似于数组,有下表和数据两部分组成,没有长度限制,可以动态增长。
  declare
	TYPE ename_table_type			--自定义类型
		IS TABLE OF varchar2(20)	--数据类型是varchar2
		INDEX BY binary_integer;
	v_ename_table ename_table_type;
 begin
	select ename
	into v_ename_table(1)			--放入第一个下标
	from emp where empno = 7788;
	dbms_output.put_line(v_ename_table(1));
end;
/


B 记录类型(相当于面向对象封装的对象类型):包括多个组件,组件的数据类型可以不同,
每个组件叫做field(域)。 
declare 
TYPE emp_record_type IS RECORD
	(name varchar2(20), job varchar2(10)); 
	emp_record emp_record_type; 
begin 
	select ename , job into emp_record.name , emp_record.job 
	from emp where empno = 7788; 
	dbms_output.put_line(emp_record.name||' - '||emp_record.job);
end;
/
注意:“||” 是字符串连接符号,可以将字符串连接起来。


 

 

3 %type与%rowtype: 
declare 
	v_id emp.empno%type; 
	v_job emp.job%type; 
begin 
	select empno into v_id from emp 
	where ename='SCOTT'; 
end;
注意:%type表示变量类型是数据库表中字段类型。emp 表中empno 类型是什么,那么v_id 就是什么类型。

如果我们想定义的结构和表emp行记录一样呢?
declare 
/*以前的方式,老办法
TYPE record_type IS RECORD ( 
	id emp.empno%type, 
	name emp.ename%type, 
	job emp.job%type
	--其他的字段,此处省略..
	);
	emp_record record_type;


*/
--新办法,更简洁
emp_record emp%rowtype;
begin
	select empno,ename into emp_record.empno ,
	emp_record.ename from emp where empno = 7788; 
	dbms_output.put_line('name is :'||emp_record.ename); 
end;
注意:%rowtype:变量类型是emp表全部字段的类型。也就是你当前定义的类型,和emp 所有的字段类型一致,
      相当于你定制和一个和emp 表一样的网格,里面可以存放存放和emp 各个字段对应类型的数据。

		

 

4 赋值语句:
 A 直接赋值与表达式赋值:
declare
	v_count number(2) :=0;
	v_married boolean;
	emp_record emp%rowtype;
begin
	v_count :=10;
	emp_record.ename :='fuzhi';
	v_married :=(1=2);	--表达式赋值
end; 
注意:sql和plsql 中“=”表示比较。

B 表达式赋值
declare
	v_married boolean :=true;
	v_comm emp.comm%type;
begin
	select comm into v_comm
	from emp where empno = 7788;
	v_married :=(v_comm is null);
	dbms_output.put_line(v_married); -- boolean 类型不能通过这个打印,报错
end;

C boolean 可以通过if else 进行判断
declare
	v_married boolean :=true;
	v_comm emp.comm%type;
begin
	select comm into v_comm
	from emp where empno = 7788;
	v_married :=(v_comm is null);
	if v_married = true then
		dbms_output.put_line('true');
	else 
		dbms_output.put_line('false');
	end if;
end;


D 赋值使用函数
declare
	emp_record emp%rowtype;
	v_count number;
	v_now char(30);
	v_user char(20);
begin
	select ename
	into emp_record.ename
	from emp where empno = 7788;
	v_count :=length(emp_record.ename);
	v_now :=to_char(sysdate,'yyyy-mm-dd');
	v_user :=user;
	dbms_output.put_line(v_now);
	dbms_output.put_line(v_user);
	dbms_output.put_line(v_count);
end;
注意:user 是当前用户,show user 可以进行查看

E 替代变量的使用:
declare
	emp_record emp%rowtype;
	v_count number;
	v_now char(30);
	v_user char(20);
begin 
	select ename
	into emp_record.ename
	from emp where empno =&no;
	dbms_output.put_line(emp_record.ename);
end;
分享到:
评论

相关推荐

    Oracle PL/SQL实战(待续)

    同时,PL/SQL支持多种数据类型,包括数值类型(NUMBER)、字符类型(VARCHAR2, CHAR)、日期类型(DATE)等,以及复合类型如记录(RECORD)和表类型(TABLE)。 此外,PL/SQL的包(PACKAGE)概念是将相关的过程和...

    ORACLE PL/SQL从入门到精通

    PL/SQL变量的声明和使用是编程的基础,涉及到变量的声明、初始化、数据类型、%type属性等。变量的赋值和使用也是需要掌握的内容。 此外,书中还涉及到了ORACLE数据库的安装、存储过程的编写、序列操作、数据类型...

    oracle 中 pl/sql 只是学习方法

    变量有其特定的数据类型,如NUMBER、VARCHAR2、DATE等,这些类型与Oracle数据库的表列类型相对应。 2. **流程控制**:PL/SQL支持条件语句(IF-THEN-ELSE、CASE)和循环语句(FOR、WHILE、LOOP)。这使得我们能够在...

    Oracle PL/SQL编程及最佳实践

    PL/SQL 提供了多种数据类型,例如数字、字符、日期等。数字类型包括整数、浮点数等。字符类型包括字符、字符串等。日期类型包括日期、时间等。 十、基本类型(系统预定义类型) PL/SQL 提供了多种基本类型,例如...

    pl/sql精通

    2. 数据类型:PL/SQL支持多种数据类型,包括数值类型(如NUMBER、INTEGER)、字符类型(VARCHAR2、CHAR)、日期时间类型(DATE)、布尔类型(BOOLEAN)、以及复合和引用类型(如记录、表类型、指针等)。 3. 变量与...

    Oracle资料学习PL/SQL必备

    2. **数据类型**:PL/SQL支持多种数据类型,包括数值类型(如NUMBER)、字符串类型(如VARCHAR2、CHAR)、日期时间类型(如DATE)、布尔类型(BOOLEAN)以及复合数据类型(如记录和数组)。 3. **变量声明和赋值**...

    pl/sql使用软件

    2. **数据类型**:PL/SQL有多种内置数据类型,如NUMBER(数字)、VARCHAR2(可变长度字符串)、DATE(日期时间)、BOOLEAN(布尔值)等。此外,还可以定义对象类型和复合类型。 3. **流程控制**:包括条件语句(IF-...

    PL/SQL学习资料

    1. **变量和数据类型**:在PL/SQL中,我们有多种数据类型,包括数值型(NUMBER、BINARY_INTEGER、INTEGER)、字符型(VARCHAR2、CHAR)、日期型(DATE)、布尔型(BOOLEAN)等,以及PL/SQL特有的对象类型和复合类型...

    PL/SQL学习教程,附笔记

    - **简单类型**:如NUMBER、VARCHAR2、DATE等,用于存储基本数据类型。 - **复合类型**:如数组、记录(%ROWTYPE),允许存储多个值或整个数据库行。 - **%ROWTYPE**:使用%ROWTYPE定义的变量会自动匹配对应表的列...

    PL/SQL 练习

    在PL/SQL中,变量的声明通常在`DECLARE`部分进行,变量类型可以是基本数据类型如`NUMBER`、`VARCHAR2`,也可以是表中的某一列的类型,例如`emp.empno%TYPE`表示变量类型与`emp`表中的`empno`列相同。变量赋值则通过`...

    Oracle PL/SQL Programming

    14. **PL/SQL内置函数**:Oracle提供了大量的内置函数,如数学函数、字符串函数、日期时间函数等,用于处理各种数据类型。 15. **动态SQL**:通过EXECUTE IMMEDIATE语句,可以在运行时构建和执行SQL,增强了程序的...

    全面对比T-SQL与PL/SQL

    全面对比 T-SQL 与 PL/SQL T-SQL 和 PL/SQL 是两种不同的数据库语言,它们都用于管理和操作关系数据库管理系统(RDBMS)。T-SQL 是微软公司开发的 SQL Server 数据库管理系统的脚本语言,而 PL/SQL 是 Oracle 公司...

    PL/SQL存储过程编程

    #### 二、PL/SQL简介 - **定义**: PL/SQL(Procedural Language for SQL)是在标准SQL的基础上增加的过程化处理能力的语言。 - **作用**: PL/SQL作为Oracle客户端工具访问Oracle服务器的操作语言,也是Oracle对SQL...

    PL/SQL经典开发手册

    在PL/SQL中,变量和常量需要在声明部分定义,并指定数据类型。常量用CONSTANT关键字声明,变量则通过赋值语句或SELECT INTO语句赋值。例如: ```sql DECLARE icode VARCHAR2(6); p_catg VARCHAR2(20); p_rate ...

    PL/Sql设计经典

    二、PL/SQL变量与数据类型 在PL/SQL中,我们可以声明各种数据类型的变量,如数值型(NUMBER)、字符型(VARCHAR2、CHAR)、日期型(DATE)等。变量可以按需分配内存,它们可以在代码块中被赋值和使用。 三、PL/SQL...

    oracle实验五 PL/SQL编程

    ### Oracle 实验五 PL/SQL编程 #### 实验目的 ...通过上述步骤,不仅加深了对PL/SQL数据类型、控制结构和游标的理解,还掌握了如何编写和运行函数、过程以及触发器,进一步提高了数据库管理能力。

    PL/SQL基础一之pl/sql块

    PL/SQL,全称为Procedural Language/Structured Query Language,是Oracle数据库的一种扩展,它将SQL语句与过程性编程语言结合在一起,为数据库管理提供了更强大的功能。本篇文章主要探讨PL/SQL的基础知识,包括其...

    pl/sql

    3. **变量与数据类型**:PL/SQL支持多种内置数据类型,如NUMBER、VARCHAR2、DATE、BOOLEAN等。变量可以声明在块的声明部分,并在执行部分中进行赋值和操作。 4. **控制流程语句**:包括IF-THEN-ELSIF-ELSE、CASE、...

Global site tag (gtag.js) - Google Analytics