存储过程

注 :

(1)在procedure中想用ddl,就必须用execute   immediat 'create table text1(id int not null primary key)';

且必须显授权(grant create any table to 用户名),否则报'insufficient privileges',无权限.

(2)每条语句都需以';'结尾.

1.基本语法 : 创建一个存储过程,如果存在就覆盖.  (注:as/is没区别,只是兼容别的SQL而已)

create or replace procedure  过程名(参数1 in number ,参数2 in number) is

变量1 integer:=0;

变量2 date;

exp   exception;  --定义异常

begin

--存储过程中调用DDL,必须用动态SQL方法

execute  immediate ' create table testtable (testid int not null primary key,testname varchar2(10) ) ';

execute   immediate   'insert   into   testtable values(1,110) ';

raise   exp;    --抛出异常

exception        --异常处理

when   exp   then

dbms_output.put_line( '执行成功1 ');    --控制台打印

when   others   then

dbms_output.put_line( '执行失败0 ');

end;

2.基本语句:

(1)变量赋值

<1>变量初始化赋值:=值;

<2>变量赋值: select ....into... from ....;     --select ... from ... 方法在存储过程中时的格式

select name1,name2 into var1,var2 from table1

(2)For 循环

For ... in ... LOOP

--执行语句

end LOOP;

<1>循环遍历游标

create or replace procedure test() as

Cursor cursor is select name from student; name varchar(20);

begin

for name in cursor LOOP

begin

dbms_output.putline(name);

end;

end LOOP;

end test;

<2>循环遍历数组

create or replace procedure test(varArray in myPackage.TestArray) as

--(输入参数varArray 是自定义的数组类型,定义方式见标题6)

i number;

begin

i := 1;  --存储过程数组是起始位置是从1开始的,与java、C、C++等语言不同。因为在Oracle中本是没有数组

的概念的,数组其实就是一张

--表(Table),每个数组元素就是表中的一个记录,所以遍历数组时就相当于从表中的第一条记录开始遍历

for i in 1..varArray.count LOOP

dbms_output.putline('The No.'|| i || 'record in varArray is:'||varArray(i));

end LOOP;

end test;

3.代码抛出异常用raise (异常名);

4.游标 :

(1)系统级游标:cursor SYS_REFCURSOR;只能通过open方法打开和赋值

OPEN cursor FOR select name1,name2 from table1 where a='1';  --sql语法

LOOP

FETCH cursor INTO name1,name2;    --只能通过fetch into 打开和遍历

exit when cursor%NOTFOUND;         --可用三个状态:%NOTFOUND(未找到记录);%FOUND(找到记

录);%ROWCOUNT(当前游标指向的行位置)

dbms_output.putline(name1||name2);

END LOOP;

5.连接运算符 : || ,即'ABC'||'123' : ABC123

6.单行注释: --;多行:/**/;

oracle 存储过程红叉,oracle 存储过程基本语法及问题相关推荐

  1. oracle数据库视图有红叉,oracle触发器 前面的红叉是什么意思

    一个触发器试图修改或查询目前正在触发器语句修改的表.建议改一下你的触发器逻辑. 网上也有解释: error: ora-04091: table name is mutating, trigger/fu ...

  2. oracle存储while用mysql_oracle存储过程while

    Oracle下我个人认为有些事情不一定用存储过程,但还是说一下 oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN ...

  3. oracle创建包 和调用,oracle创建函数和调用存储过程和调用函数的例子(区别)...

    创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...

  4. oracle数据库存储函数,Oracle数据库存储过程

    一.定义 所谓存储过程,就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中.使用的时候,用户通过指定已经定义的存储过程名字并给相应的存储过程参数来调用并执行它,从 ...

  5. 存储过程与函数oracle

    存储在数据库中供所有用户程序调用的子程序叫做存储过程,存储函数. 存储过程是在大型数据库系统中,用PL/SQL语言编写的能完成一定处理功能的存储在数据库字典中的程序,它是一个命名的 PL/SQL 块, ...

  6. oracle中创建游标,oracle 存储过程创建游标

    Oracle与Sql Server差异点详解 1.create函数或存储过程异同点 Oracle 创建函数或存储过程一般是 create or replace -- SQL SERVER 则是在创建之 ...

  7. oracle存储过程循环输入数据,oracle 存储过程循环插入数据

    Database 物理文件 控制文件(Control File) 1.一个数据库至少需要一个控制文件 2.控制文件(二进制文件)是一个很小的(通常是数据库中最小的)文件,大小一般在1-5M左右. 3. ...

  8. oracle存储过程不退出,oracle 存储过程不结束

    Q5:oracle数据库怎么创建存储过程? Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常. Oracle存储过程可以有无参数存储过程和带参数存储过程. 一.无参程序过程语法 1 ...

  9. Oracle的sql开发之存储过程实战

    转载:http://blog.csdn.net/u013057786/article/details/17165623 1.定义所谓存储过程(Stored Procedure),就是一组用于完成特定数 ...

最新文章

  1. mNGS及古细菌DNA检测应用推荐:PCR去污染试剂盒
  2. Spring的静态注入
  3. 如何定制化SAP Spartacus的页面路由Route
  4. linux查询所建文件夹,linux中的文件和文件夹的新建、查询、删除
  5. ACCESS模糊查询出现的变态问题,不知道该问题的希望注意,知道内幕的高手还望给小弟一个解释 Thanks...
  6. 我比领导小15岁,互相有好感,为什么每次路过我办公室都叹气?
  7. (网络收藏)WIKI
  8. Device mapper存储方式
  9. 算法:判断树是否相同100. Same Tree
  10. 平面2R机器人(二连杆)运动学与动力学建模+附仿真模型
  11. Java的身份证号码工具类
  12. tmsf28335的启动步骤
  13. java浏览器插件开发,如何获取Windows的IcedTea浏览器插件(OpenJDK浏览器Java插件)?
  14. OpenJDK构建工具IcedTea 1.7发布
  15. 2.12美团点评技术
  16. 深信服技术支持工程师(安全、云计算方向)面试题目
  17. Cocoa Touch Layer
  18. 一键生成动漫头像微信小程序源码
  19. 阿拉伯数字与中文数字的相互转换
  20. Treemily想做封闭版的家族社群,比Geni更迎合华人家庭观念

热门文章

  1. AUTOSAR实战教程 - 软件集成调试_程序跑飞一招解决
  2. MK趋势检验和MK突变检验(代码分享及结果分析)
  3. Redis缓存击穿,缓存穿透,缓存雪崩,附解决方案
  4. ISCA2011第二篇文献:Virtualizing Performance Asymmetric Multi-core Systems
  5. 计算机控制实验总结电机调速,实验八-电机调速实验.docx
  6. comtrade文件C语言,生成的comtrade.dat文件有关问题,波形分析软件打开看点是乱的...
  7. Chrome提示:"请停用以开发者模式运行的扩展程序"的解决办法
  8. shell脚本的归档文件
  9. oracle与mysql执行sql原理_PostgreSQL、Oracle/MySQL和SQL Server的MVCC实现原理方式
  10. 什么是底层架构_厉害!阿里技术专家发布1500多页计算机底层架构原理解析宝典|现代汽车|计算机|原理|操作系统|存储器...