在使用oracle存储过程时,有一些需要注意的地方,下面就来总结一下。

1.在oracle的存储过程中,数据表别名不能加as

  也许是为了区分存储过程中的as,怕与过程中的as冲突。

  如:

    select * from appinfo a;  --正确

    select * from appinfo as a;  --错误

2.在oracle的存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了

  如:

    select u.name into uname

    from user u

    --有into,编译正确。

    

    select u.name

    from user u

    --没有into,编译报错,提示:Compilation   Error: PLS-00428: an INTO clause is expected in this SELECT statement.

3.在利用select...into...语法时,要必须先确保数据库有该条语句

  

  在使用select...into...语句前可以使用select count(*)from查看数据库中是否有数据存在,如果有数据再使用select...into...语句,否则会报出"no data found"

4.在存储过程中,别名不能和字段名称相同,否则虽然编译可以通过,但在运行时会报错

  会报出ORA-01422:exact fetch returns more than requested number of rows

5.在oracle存储过程中,关于出现null的问题。

  假设有一个user表,如下:

    create table user (

    id varchar2(50) primary key not null,

    u_name varchar2(50) not null,

    u_age varchar2(50) not null,

    );

  如果在存储过程中,使用如下的语句:

    select sum(u_age) into fcount from user where u_age = 'xxx';

  如果user表中不存在u_age='xxx'的记录,则fcount=null(即使fcount定义时设置了默认值,依然

  无效,fcount还是会变成null),这样的话以后使用fcount时有可能会出现问题,所以在这里最好先判

  断一下:

  if fcount is null then

    fcount := 0;

  end if;

  这样就可以解决了。

  

  

关于oracle存储过程需要注意的问题的更多相关文章

  1. oracle 存储过程

    来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...

  2. Oracle存储过程语法

    原文链接:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程  1 CREATE OR REPLACE PROCEDURE 存储过程名  ...

  3. ORACLE存储过程调用Web Service

    1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...

  4. Oracle存储过程基本语法介绍

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  5. MyBatis调用Oracle存储过程

    MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...

  6. Oracle存储过程(转)

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  7. Oracle存储过程中异常Exception的捕捉和处理

    Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...

  8. Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER

    关于Oracle存储过程执行权限问题的解决 http://blog.sina.com.cn/s/blog_6ceed3280101hvlo.html (2014-04-02 04:06:28) 转载▼ ...

  9. ORACLE存储过程学习

    存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...

  10. C# 获取 oracle 存储过程的 返回值1

    /// <summary> /// 返回对应表的模拟自增字段值 /// </summary> /// <param name="tablename"& ...

随机推荐

  1. Parallel

    介绍 C# 4.0 的新特性之并行运算 Parallel.For - for 循环的并行运算 Parallel.ForEach - foreach 循环的并行运算 Parallel.Invoke - ...

  2. windows修改文件的修改或者创建时间

    https://www.online-tech-tips.com/computer-tips/how-to-change-the-last-modified-date-creation-date-an ...

  3. Android中Handler导致的内存泄露

    http://www.androiddesignpatterns.com/2013/01/inner-class-handler-memory-leak.html Consider the follo ...

  4. CodeForces 316D3 PE Lesson

    time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standa ...

  5. bzoj 1696: [Usaco2007 Feb]Building A New Barn新牛舍 ——中位数排序

    Description 经过多年的积蓄,农夫JOHN决定造一个新的牛舍.他知道所有N(2 <= N <= 10,000)头牛的吃草位置,所以他想把牛舍造在最方便的地方. 每一头牛吃草的位置 ...

  6. php trait 变量类型为数组时 不能被父类子类同时use

    直接上代码 --------------------------- trait T1 { public static $a=1; public static $b= []; public static ...

  7. [bzoj4567][Scoi2016]背单词-Trie+贪心+模型转化

    Brief Description 给你N个互不相同的字符串,记\(S_i\)为第i个字符串,现在要求你指定N个串的出现顺序,我们用\(V_i\)表示第i个字符串是第几个出现的,则V为1到N的一个排列 ...

  8. 自己动手一步步安装Linux系统

    自己动手一步步安装Linux系统 http://502245466.blog.51cto.com/7559397/1291910/

  9. MNIST数据集转化为二维图片

    #coding: utf-8 from tensorflow.examples.tutorials.mnist import input_data import scipy.misc import o ...

  10. CentOS下配置FTP

    http://www.cnblogs.com/zhenmingliu/archive/2012/04/25/2470646.html 常见错误: 1.FTP服务器已经拒绝 解决方案 # setenfo ...