当前位置:  数据库>oracle

PL/SQL数据类型

    来源: 互联网  发布时间:2017-06-16

    本文导语: 1、变量和常量变量语法: variable_name data_type [[NOT NULL] [:=VALUE]]    说明:NOT NULL对变量定义非空约束,必须为变量赋非空的初始值,并且不允许在任何时候将其值修改为NULL。--变量样例:SQL>SERVEROUT ONSQL>DECLARE  v_num NUMBER(4);  BEGIN...

1、变量和常量
变量语法: variable_name data_type [[NOT NULL] [:=VALUE]]
    说明:NOT NULL对变量定义非空约束,必须为变量赋非空的初始值,并且不允许在任何时候将其值修改为NULL。
--变量样例:
SQL>SERVEROUT ON
SQL>DECLARE
  v_num NUMBER(4);
 BEGIN
  v_num:=20;
  DBMS_OUTPUT.PUT_LINE('变量名v_num的值为:'||v_num);
 END;
 /

常量语法: constant_name CONSTANT data_type [:=VALUE]
--常量样例:
DECLARE
  c_num CONSTANT NUMBER(4):=100;
BEGIN 
  DBMS_OUTPUT.PUT_LINE('常量名c_num的值为:'||c_num);
END;

 
2、复合数据类型
2.1 %TYPE类型
    引用某个变量或者数据库的列的类型作为某变量的数据类型。
SET SERVEROUT ON
DECLARE
    v_ename scott.emp.ename%TYPE;
    v_sal1 number(11);
    v_sal2 v_sal1%TYPE;
BEGIN
    SELECT ename,sal INTO v_ename,v_sal1 FROM scott.emp WHERE empno=7369;
    v_sal2:=v_sal1;
    DBMS_OUTPUT.PUT_LINE(v_ename||'的工资是'||v_sal2);
END;

2.2 %ROWTYPE
    引用数据库表中的一行作为数据类型,即RECORD类型(记录类型),是PL/SQL的附加类型。表示一条记录,相当于JAVA中的对象。可以使用“.”来访问记录中的属性。

12345678910111213 DECLARE
 
    v_emp scott.emp%ROWTYPE;     
 
BEGIN
 
    SELECT * INTO v_emp FROM scott.emp WHERE empno=7654;     
 
    DBMS_OUTPUT.PUT_LINE('姓名:'||v_emp.ename);
 
    DBMS_OUTPUT.PUT_LINE('部门编号:'||v_emp.deptno);
 
END;

 
2.3 记录类型
语法:TYPE record_type IS RECORD(
                field1_name data_type_and_size [NOT NULL][:=default_value],
                ...
                fieldn_name data_type_and_size [NOT NULL][:=default_value]
            );
    将逻辑相关的数据作为一个单元存储起来,使用TYPE关键字来定义,是显示记录类型,使用%ROWTYPE是隐式记录类型。
--样例一:
DECLARE
 
 TYPE emp_record_type IS RECORD(
 
      ename VARCHAR2(10),
 
      deptno NUMBER(2)
 
 );   
 
    emp_record emp_record_type;     
 
BEGIN   
 
    SELECT ename,deptno INTO emp_record FROM scott.emp WHERE empno=7654;         
 
    DBMS_OUTPUT.PUT_LINE('姓名:'||emp_record.ename);   
 
    DBMS_OUTPUT.PUT_LINE('部门编号:'||emp_record.deptno);
 
END;

 --样例二:
DECLARE
 
  TYPE emp_record_type IS RECORD(
 
      name scott.emp.ename%TYPE,
 
      salary scott.emp.sal%TYPE,
 
      deptno scott.emp.deptno%TYPE
 
  );
 
  emp_record emp_record_type;
 
BEGIN
 
  select ename,sal,deptno into emp_record from scott.emp where empno=&no;       
 
  DBMS_OUTPUT.PUT_LINE('姓名:'||emp_record.name);   
 
  DBMS_OUTPUT.PUT_LINE('部门编号:'||emp_record.deptno);
 
END;

或:
1234567891011121314151617181920212223 DECLARE
 
  TYPE emp_record_type IS RECORD(
 
      name scott.emp.ename%TYPE,
 
      salary scott.emp.sal%TYPE,
 
      deptno scott.emp.deptno%TYPE
 
  );
 
  emp_record emp_record_type;
 
BEGIN
 
        select ename,sal,deptno into emp_record.name,emp_record.salary,emp_record.deptno from scott.emp where empno=&no;
 
        DBMS_OUTPUT.PUT_LINE('姓名:'||emp_record.name);   
 
        DBMS_OUTPUT.PUT_LINE('部门编号:'||emp_record.deptno);
 
END;

 --样例三:
--检索数据
DECLARE
        dept_record scott.dept%ROWTYPE;
BEGIN
        dept_record.deptno:=1;
        dept_record.dname:='administrator';
        dept_record.loc:='NC';
        insert into scott.dept values dept_record;
END;
--插入数据
DECLARE
        dept_record scott.dept%ROWTYPE;
BEGIN
        dept_record.deptno:=2;
        dept_record.dname:='administrator';
        insert into scott.dept(deptno,dname) values(dept_record.deptno,dept_record.dname);
END; 
--更新数据
DECLARE
        dept_record scott.dept%ROWTYPE;
BEGIN
        dept_record.deptno:=1;
        dept_record.dname:='HZY';
        update scott.dept set row=dept_record where deptno=dept_record.deptno;
END;
--删除数据
DECLARE
        dept_record scott.dept%ROWTYPE;
BEGIN
        dept_record.deptno:=1;
        delete from scott.dept where deptno=dept_record.deptno;
END;

PL/SQL Developer实用技巧分享

Oracle PL/SQL复合数据类型 

Oracle | PL/SQL Check约束用法详解 

PL/SQL 存储函数和存储过程 


    
 
 

您可能感兴趣的文章:

  • 如何将java.util.Date类型的日期转换成java.sql.Date类型的日期?
  • 请问SQL中的datetime类型于java中什么类型对应?
  • Access 数据类型与 MS SQL 数据类型的相应
  • Sql学习第一天——SQL 将变量定义为Table类型(虚拟表)
  • 对面的大虾看过来:sql到java的类型转换?
  • sql使用cast进行数据类型转换示例
  • SQL 时间类型的模糊查询
  • sql语法中什么类型的值需要用单引号‘’修饰?
  • 怎样把String转换成int?怎样获得系统时间并转换成java.sql.date类型?
  • java.sql.SQLException: 类型长度大于最大值 是什么意思?在线给分
  • 如何获得系统时间,类型为java.sql.Timestamp
  • 如何成功读取并显示SQL数据库中image类型字段?
  • SQL中函数 replace 的参数1的数据类型ntext无效的解决方法
  • Sql Server 数据类型转换的两个函数
  • jsp中在oracle中查询日期类型时sql语句该怎么写啊?
  • 很奇怪,varchar2类型在sql*plus中可以看到正常的字符串,用java读出来却是二进制?
  • SQL 判断字段类型语句
  • JSP不支持MS SQL Server bigint类型?
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • SQL 时间类型的模糊查询的小例子
  • SQL Server 2008如何进行数据库分离和附加详细介绍
  • sql server 删除表1某些数据的同时自动删除表2的相关数据的sql代码
  • 取数据库前几条数据(sql server、oracle、mysql)的sql写法
  • 查询SQL Server中所有数据库的数据文件位置的sql脚本
  • SQL Server数据库的修复SQL语句
  • 使用php语句将数据库*.sql文件导入数据库
  • 如何实现连接一次数据库,提交多个sql语句。(sql的批处理)
  • sql2005 大数据量检索分页的sql代码
  • t-sql/mssql用命令行导入数据脚本的SQL语句示例
  • 请问Linux数据库编程是否也可以支持通用的SQL语言进行数据库编写.
  • jsp jdbc为什麽不能把数据insert到sql server 中,也不能从sql server中提取数据?!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • PL/SQL Developer 10.0发布
  • Toby's PL/SQL Editor
  • Orcale 数据库客户端PL/SQL 中文乱码的问题解决方法
  • Oracle中在pl/sql developer修改表的2种方法
  • 用oracle pl/sql 从A unix机器,去读取B unix机器上的一个文件,怎么实现?
  • oracle中如何用PL/SQL打开一个指定的库,并在屏幕上列出库中的所有表?
  • 解析PL/SQL Developer导入导出数据库的方法以及说明
  • Oracle中PL/SQL中if语句的写法介绍
  • 64位win7下pl/sql无法连接oracle解决方法
  • PL/SQL编程经验小结开发者网络Oracle
  • http://www.ddtong.com/Sql.pl?nId=871609&csId=340387&cName=%bd%af%d3%ee%d6%c7,name如何转化成中文(直接java代码)
  • 在Oracle PL/SQL中游标声明中表名动态变化的方法
  • Oracle PL/SQL入门案例实践
  • Oracle使用PL/SQL操作COM对象
  • Oracle中的存储过程在pl/sql和java中如何调用
  • Oracle数据库编写PL/SQL代码经验谈
  • PL/SQL Number数字类型函数
  • PL/SQL Dev连接Oracle弹出空白提示框的解决方法分享
  • ORACLE PL/SQL 触发器编程篇介绍
  • [Oracle新手教程] 用PL/SQL画直方图
  • Oracle PL/SQL入门慨述
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3