惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 【当耐特】
Help Net Security
Help Net Security
P
Proofpoint News Feed
J
Java Code Geeks
爱范儿
爱范儿
Last Week in AI
Last Week in AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Full Disclosure
Google DeepMind News
Google DeepMind News
H
Help Net Security
G
Google Developers Blog
Jina AI
Jina AI
Vercel News
Vercel News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
Lohrmann on Cybersecurity
S
Schneier on Security
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
Security Archives - TechRepublic
Security Archives - TechRepublic
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic
GbyAI
GbyAI
B
Blog
O
OpenAI News
博客园_首页
Cisco Talos Blog
Cisco Talos Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hacker News: Ask HN
Hacker News: Ask HN
TaoSecurity Blog
TaoSecurity Blog
腾讯CDC
MongoDB | Blog
MongoDB | Blog
M
MIT News - Artificial intelligence
C
Cybersecurity and Infrastructure Security Agency CISA
Cyberwarzone
Cyberwarzone
Webroot Blog
Webroot Blog
Simon Willison's Weblog
Simon Willison's Weblog
Y
Y Combinator Blog
C
Cisco Blogs
A
Arctic Wolf
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
AI
AI
W
WeLiveSecurity
aimingoo的专栏
aimingoo的专栏
The Register - Security
The Register - Security
Project Zero
Project Zero
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
Blog — PlanetScale
Blog — PlanetScale

博客园 - 山娃

Oracle ORA-01722: 无效数字 处理方法 PB程序系统错误处理记录 网上摘录(琐碎信息) 网上摘录 网上摘录 数据分组处理 Oracle 要点摘录 存储过程中如何使用另一个存储过程返回的结果集 网络转帖 如何用Powerdesigner的PDM(物理数据模型)生成数据库及逆向工程(将现有的数据库生成PDM)(转) Oracle中返回结果集的存储过程(转帖 网摘) Oracle to_timestamp 函数测试(摘录,转帖) Oracle 查询历史数据(转帖) Oracle REF Cursor 用法(转帖) Oracle中的Instance实例和数据库的区别 . 转帖 建立与Oracle数据库服务器连接的两种连接模式(专用服务器与共享服务器) .转帖 Oracle10g数据库的4种存储形式 .转帖 PB “Row changed between retrieve and update” 经典错误处理。 转帖 PLSQLDEV 中修改主表和子表的主键,外键信息 oracle查询表信息(索引,外键,列等。。) 转帖 人生规划(网摘)
Oracle PL/SQL中如何使用%TYPE和%ROWTYPE(转帖)
山娃 · 2012-06-05 · via 博客园 - 山娃

Oracle PL/SQL中如何使用%TYPE和%ROWTYPE
  1. 使用%TYPE
  在许多情况下,PL/SQL变量可以用来存储在数据库表中的数据。在这种情况下,变量应该拥有与表列相同的类型。例如,students表的first_name列的类型为VARCHAR2(20),我们可以按照下述方式声明一个变量:
  DECLARE
   v_FirstName VARCHAR2(20);
  但是如果first_name列的定义改变了会发生什么(比如说表改变了,first_name现在的类型变为VARCHAR2(25))?那就会导致所有使用这个列的PL/SQL代码都必须进行修改。如果你有很多的PL/SQL代码,这种处理可能是十分耗时和容易出错的。
  这时,你可以使用”%TYPE”属性而不是将变量类型硬性编码。
  例如:
  DECLARE
   v_FirstName students.first_name%TYPE;
  通过使用%TYPE,v_FirstName变量将同students表的first_name列的类型相同(可以理解为将两者邦定起来)。
  每次匿名块或命名块运行该语句块以及编译存储对象(过程、函数、包、对象类和触发器)时,就会确定该类型。
  使用%TYPE是非常好的编程风格,因为它使得PL/SQL更加灵活,更加适应于对数据库定义的更新。
  2. 使用%ROWTYPE
  2.1 PL/SQL记录
  PL/SQL记录类型类似于C语言中的结构,是一种复合类型,是用户自定义的。
  记录提供了一种处理独立的但又作为一个整体单元相关的变量的机制。请看:
  DECLARE
   v_StudentID NUMBER(5);
   v_FirstName VARCHAR2(20);
   v_LastName VARCHAR2(20);
  这3个变量在逻辑上是相互关联的,因为他们指向students表中不同的字段。如果为这些变量声明一个记录类型,那么他们之间的关系就十分明显,可作为一个单元进行处理。
  DECLARE
   /*Define a record type to hold common student informationi*/
   TYPE t_StudentRecord IS RECORD(
   StudentID NUMBER(5),
   FirstName VARCHAR2(20),
   LastName VARCHAR2(20);
   /*Declare a variable of this type.*/
   v_StudentInfo t_StudentRecord;
  2.2 记录赋值
   可以用SELECT语句向记录赋值,这将会从数据库中检索数据并将该数据存储到记录中。注意的是,记录中字段应该和查询结果列表中的字段相匹配。
  SELECT studentID,firstName,lastName
  into v_StudentInfo
  from students where studentID=32;
  2.3 使用%ROWTYPE
  在PL/SQL中将一个记录声明为具有相同类型的数据库行的作法是很常见的。PL/SQL提供了%ROWTYPE运算符,使得这样的操作更为方便。
  例如:
  DECLARE
   v_RoomRecord rooms%ROWTYPE;
  将定义一个记录,该记录中的字段将与rooms表中的列相对应