//%type
//如果声明的变量是直接映射到数据库的某一列上,那么就可以使用%type关键字将变量
//锚定到这个列上。这样做有什么好处呢?
//比如:
//declare v_ename scott.emp.ename%type;
//当数据类型发生变化时,此方法显得非常灵活。
//如果更改了列的长度,那么锚定到该列上的所有变量都会自动更改其长度;
//假设我们将v_ename定义为varchar2(10),那么当emp表中的ename列发生变化时,
//我们得手动将v_enam更改为emp.ename相同的数据长度;
//当我们使用锚定类型后,变量就会自动进行调整。
//%rowtype
//%rowtype与%type相似;不过它将变量锚定到表的所有列,而不是锚定到某一列;
//更多关于%rowtype与%type,
//请参考:http://blog.csdn.NET/BOBO12082119/archive/2010/12/02/6051367.aspx
//下面是一个实例:
create table dept(
deptno varchar2(5),
dname varchar2(20),
loc varchar2(20)
);
create or replace procedure pro_insert(
deptno_in in dept.deptno%type,
dname_in in dept.dname%type,
loc_in in dept.loc%type
)
as
v_dept dept%rowtype;
begin
begin
insert into dept
select deptno_in,dname_in,loc_in
from dual;
commit;
dbms_output.put_line('inserting successed');
exception
when others then
rollback;
end;
begin
select deptno_in,dname_in,loc_in
into v_dept from dual;
dbms_output.put_line(
'The data having been inserted.'||
'deptno:'||v_dept.deptno||
',dname:'||v_dept.dname||
',loc:'||v_dept.loc
);
end;
end pro_insert;
//
//上面的过程中,使用到了嵌套块;
//所谓嵌套块就是块中包含其他子块;
//嵌套块允许出现在代码块的异常处理部分和执行部分,
//但是不允许出现在声明中。
//
SQL> set serveroutput on;
SQL> exec pro_insert('111','财务部','福州');
inserting successed
The data having been inserted.deptno:111,dname:财务部,loc:福州
PL/SQL procedure successfully completed
//
//从这里看出来,%rowtype定义的变量作用有点相似游标,
//但是我们不能将%rowtype定义的变量当做游标来使用,
//否则我们将会得到下面的错误:
//ORA-01422: exact fetch returns more than requested number of rows
declare v_dept dept%rowtype;
begin
select deptno,dname,loc
into v_dept
from dept;
dbms_output.put_line(
'The data having been inserted.'||
'deptno:'||v_dept.deptno||
',dname:'||v_dept.dname||
',loc:'||v_dept.loc
);
end;
//
//下面我们用游标来实现上面的操作,具体看下面的匿名块:
declare
cursor cv_dept is
select *
from dept;
begin
//变量v_dept不必我们显示声明
//for循环会为我们隐式的打开和关闭游标,不必我们现实的打开和关闭游标
for v_dept in cv_dept loop
dbms_output.put_line(
'deptno:'||v_dept.deptno||
',dname:'||v_dept.dname||
',loc:'||v_dept.loc
);
end loop;
end;
//
deptno:111,dname:财务部,loc:福州
deptno:120,dname:销售部,loc:大连
deptno:130,dname:科研部,loc:北京
PL/SQL procedure successfully completed
  1. //%type
  2. //如果声明的变量是直接映射到数据库的某一列上,那么就可以使用%type关键字将变量
  3. //锚定到这个列上。这样做有什么好处呢?
  4. //比如:
  5. //declare v_ename scott.emp.ename%type;
  6. //当数据类型发生变化时,此方法显得非常灵活。
  7. //如果更改了列的长度,那么锚定到该列上的所有变量都会自动更改其长度;
  8. //假设我们将v_ename定义为varchar2(10),那么当emp表中的ename列发生变化时,
  9. //我们得手动将v_enam更改为emp.ename相同的数据长度;
  10. //当我们使用锚定类型后,变量就会自动进行调整。
  11. //%rowtype
  12. //%rowtype与%type相似;不过它将变量锚定到表的所有列,而不是锚定到某一列;
  13. //更多关于%rowtype与%type,
  14. //请参考:http://blog.csdn.NET/BOBO12082119/archive/2010/12/02/6051367.aspx
  15. //下面是一个实例:
  16. create table dept(
  17. deptno varchar2(5),
  18. dname varchar2(20),
  19. loc varchar2(20)
  20. );
  21. create or replace procedure pro_insert(
  22. deptno_in in dept.deptno%type,
  23. dname_in in dept.dname%type,
  24. loc_in in dept.loc%type
  25. )
  26. as
  27. v_dept dept%rowtype;
  28. begin
  29. begin
  30. insert into dept
  31. select deptno_in,dname_in,loc_in
  32. from dual;
  33. commit;
  34. dbms_output.put_line('inserting successed');
  35. exception
  36. when others then
  37. rollback;
  38. end;
  39. begin
  40. select deptno_in,dname_in,loc_in
  41. into v_dept from dual;
  42. dbms_output.put_line(
  43. 'The data having been inserted.'||
  44. 'deptno:'||v_dept.deptno||
  45. ',dname:'||v_dept.dname||
  46. ',loc:'||v_dept.loc
  47. );
  48. end;
  49. end pro_insert;
  50. //
  51. //上面的过程中,使用到了嵌套块;
  52. //所谓嵌套块就是块中包含其他子块;
  53. //嵌套块允许出现在代码块的异常处理部分和执行部分,
  54. //但是不允许出现在声明中。
  55. //
  56. SQL> set serveroutput on;
  57. SQL> exec pro_insert('111','财务部','福州');
  58. inserting successed
  59. The data having been inserted.deptno:111,dname:财务部,loc:福州
  60. PL/SQL procedure successfully completed
  61. //
  62. //从这里看出来,%rowtype定义的变量作用有点相似游标,
  63. //但是我们不能将%rowtype定义的变量当做游标来使用,
  64. //否则我们将会得到下面的错误:
  65. //ORA-01422: exact fetch returns more than requested number of rows
  66. declare v_dept dept%rowtype;
  67. begin
  68. select deptno,dname,loc
  69. into v_dept
  70. from dept;
  71. dbms_output.put_line(
  72. 'The data having been inserted.'||
  73. 'deptno:'||v_dept.deptno||
  74. ',dname:'||v_dept.dname||
  75. ',loc:'||v_dept.loc
  76. );
  77. end;
  78. //
  79. //下面我们用游标来实现上面的操作,具体看下面的匿名块:
  80. declare
  81. cursor cv_dept is
  82. select *
  83. from dept;
  84. begin
  85. //变量v_dept不必我们显示声明
  86. //for循环会为我们隐式的打开和关闭游标,不必我们现实的打开和关闭游标
  87. for v_dept in cv_dept loop
  88. dbms_output.put_line(
  89. 'deptno:'||v_dept.deptno||
  90. ',dname:'||v_dept.dname||
  91. ',loc:'||v_dept.loc
  92. );
  93. end loop;
  94. end;
  95. //
  96. deptno:111,dname:财务部,loc:福州
  97. deptno:120,dname:销售部,loc:大连
  98. deptno:130,dname:科研部,loc:北京
  99. PL/SQL procedure successfully completed

%RowType 的使用,获取某行的数据类型。

set serveroutput on;
DECLARE
rowData student%ROWTYPE;
BEGIN
SELECT * INTO rowData
FROM student
WHERE sName = 'Jack'; DBMS_OUTPUT.put_line ('find the name: '||rowData.sName);
DBMS_OUTPUT.put_line ('find the age: '||rowData.SAGE);
DBMS_OUTPUT.put_line ('find the email: '||rowData.sEmail);
DBMS_OUTPUT.put_line ('find the phone: '||rowData.sPhone);
DBMS_OUTPUT.put_line ('find the address: '||rowData.sAddress); END;

%type的用法的更多相关文章

  1. Activator.CreateInstance 方法 (Type) 的用法

    转自:http://www.cnblogs.com/lmfeng/archive/2012/01/30/2331666.html Activator.CreateInstance 方法 (Type) ...

  2. 【C#反射】Type的用法

    Type属性的应用 Type type = typeof(MyClass); Console.Write("$类型名:{ type.Name}"); Console.Write(& ...

  3. python type的用法

    目录 描述 语法 用法 type和isinstance Type和Object 描述 python的 type 函数有两个用法,当只有一个参数的时候,返回对象的类型.当有三个参数的时候返回一个类对象. ...

  4. Python中type的用法

    目录 描述 语法 用法 type和isinstance Type和Object 描述 python的 type 函数有两个用法,当只有一个参数的时候,返回对象的类型.当有三个参数的时候返回一个类对象. ...

  5. golang中type常用用法

    golang中,type是非常重要的关键字,一般常见用法就是定义结构,接口等,但是type还有很多其它的用法,在学习中遇到了以下几种,这点简单总结记录下 定义结构 type Person struct ...

  6. Type InvokeMember()用法简介

    举例: Type tDate = typeof(System.DateTime); Object result = tDate.InvokeMember("Now", Bindin ...

  7. linux type命令用法_转

    转自:http://codingstandards.iteye.com/blog/831504 在脚本中type可用于检查命令或函数是否存在,存在返回0,表示成功:不存在返回正值,表示不成功. $ t ...

  8. c# Type.InvokeMember用法

    函数原型: public object InvokeMember(string, BindingFlags, Binder, object, object[]);string:你所要调用的函数名Bin ...

  9. 标准类型内建函数 type()介绍

    我们现在来正式介绍一下 type().在Python2.2 以前, type() 是内建函数.不过从那时起,它变成了一个“工厂函数”.在本章的后面部分我们会讨论工厂函数, 现在你仍然可以将type() ...

随机推荐

  1. CSS3(transform/transition/animation) 基础 总结

    1.CSS3新增的样式(常用) //颜色透明表示rgba(0,0,0,.5) //圆角(定义角半径)border-radius: 5px 10px 15px 20px; //文字/盒子阴影text-s ...

  2. [置顶] Weblogic节点管理

    配置节点管理之后能方便管理,可以在控制台启动停止被管服务器,一般配置步骤:创建受管服务器,创建machine,屏蔽SSL主机名验证,修改nodemanager.properties,启动nodeman ...

  3. ssdt_hook NtOpenProcess

        获取ssdt表中所有函数的地址 for (int i = 0; i < KeServiceDescriptorTable->NumberOfServices; i++) {     ...

  4. ASP.NET MVC 之Model的呈现

    ASP.NET MVC 之Model的呈现(仅此一文系列三) 本文目的 我们来看一个小例子,在一个ASP.NET MVC项目中创建一个控制器Home,只有一个Index: public class H ...

  5. 【Hook技术】实现从"任务管理器"中保护进程不被关闭 + 附带源码 + 进程保护知识扩展

    [Hook技术]实现从"任务管理器"中保护进程不被关闭 + 附带源码 + 进程保护知识扩展 公司有个监控程序涉及到进程的保护问题,需要避免用户通过任务管理器结束掉监控进程,这里使用 ...

  6. 线性判别分析算法(LDA)

    1. 问题 之前我们讨论的PCA.ICA也好,对样本数据来言,可以是没有类别标签y的.回想我们做回归时,如果特征太多,那么会产生不相关特征引入.过度拟合等问题.我们可以使用PCA来降维,但PCA没有将 ...

  7. springMVC3学习(八)--全局的异常处理

    在springMVC的配置文件中: <bean id="exceptionResolver" class="org.springframework.web.serv ...

  8. 简单使用JSON,通过JSON 字符串来创建对象(二)

    把 JSON 文本转换为 JavaScript 对象 JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 Jav ...

  9. 风萧萧兮易水寒 coding一去兮不复还

    这一年都在忙碌中渡过.没有看过日落没有享受过日常.希望可以在忙碌中有些收获.工作马上要三年了. 风萧萧兮易水寒 coding一去兮不复还 记的刚毕业的时候喜欢自己晚上更新下博客.那时候也很忙.但是后来 ...

  10. VC中如何设置菜单项的触发状态?

    MFC中初始菜单栏如下: 当工程未新建,或者未打开时,后面的观测菜单设置为灰色,不可触发. 当新建工程或者打开工程后,菜单变回可触发状况. 观测菜单如下:   下面以轴力观测菜单为例 轴力初始测量菜单 ...