oracle错误1405,oracle -1405错误解决方法
PROC中的NULL值的处理
如果某一字段取出的值是NULL,会报:sqlcode=-1405, sqlerr=ORA-01405: 读取的列值为 NULL
并且相应的宿主变量的值不会被改变,为执行该SQL语句之前的值. 常用的处理NULL值的方法有:
(1)采用指示器变量,此时不会有-1405错误,当必须是所以为NULL的字段都有相应的指示器变量,如果某一字段没有指示器变量,但取出的值
为NULL值,则仍然会有-1405错误.当取出的值是NULL时,相应的指示器变量变量为-1,可根据指示器变量的值做响应的处理。
(2)如果字段较多,可取字段到一个结构体中及与该结构体对应的指示器结构体中.如上面的例子中可定义结构体:
struct str_emp{
long al_empno;
char ac_ename;
char ac_hiredate;
double af_sal;
};
struct str_emp_ind{
long al_empno;
char ac_ename;
char ac_hiredate;
double af_sal;
};
struct str_emp str_emp;
strcut str_emp_ind str_emp_ind;
在取之前可用memset(&str_emp,0,sizeof(str_emp)).清空该结构体,这样如果是字符型的NULL,会为"",整型的NULL会为0,
浮点型的会为0.00。此时不会有-1405错误。
(3)也可采用NVL()函数:举例如下:
EXEC SQL DECLARE authors CURSOR FOR
SELECT EMPNO, NVL(ENAME,chr(0)),nvl(to_char(HIREDATE,'yyyy/mm/dd hh24:mi:ss'),chr(0)),NVL(SAL,0) FROM EMP;
这样也不会有-1405错误不,当取出的值是NULL时,自动用NVL()中指定的值代替.
CHR(0)也可直接用''代替,如下:
SELECT EMPNO, NVL(ENAME,''),nvl(to_char(HIREDATE,'yyyy/mm/dd hh24:mi:ss'),''),NVL(SAL,0) FROM EMP;5、PROC中的错误的处理
所有的SQL语句都有可能出错.所以都要加以判断,但每个SQL语句后都加错误判断,太麻烦,可用一个函数如sql_error()来进行错误处理,
方法:
(1)定义ql_error()函数。
(2)在开头加上EXEC SQL WHENEVER SQLERROR DO sql_error();这样当发生sqlca.sqlcode <0 的错误时,程序自动转到sql_error()中执行. 注意:对sqlca.sqlcode >0的错误如 sqlca.sqlcode =1403 是不会转到sql_error()中执行的.
另外:在UNIX下,可以用OERR 来查找错误的描述。如: ora ORA -1405 查找错误号为-1405的描述.
oracle错误1405,oracle -1405错误解决方法相关推荐
- imp导入时 出现IMP-00017:由于 ORACLE 错误 6550, 以下语句失败: 解决方法
imp导入时 出现IMP-00017:由于 ORACLE 错误 6550, 以下语句失败: 解决方法 参考文章: (1)imp导入时 出现IMP-00017:由于 ORACLE 错误 6550, 以下 ...
- oracle 01722 无效数字,Oracle连接字符串报错误ORA-01722:无效数字的解决方法
Oracle连接字符串报错误ORA-01722:无效数字的解决方法,如下函数,用来查出名字相似于某字符串 Oracle连接字符串报错误ORA-01722:无效数字的解决方法,如下函数,用来查出名字相似 ...
- oracle 查看并行数据库,Oracle数据库并行查询出错的解决方法
Oracle的并行查询是使用多个操作系统级别的Server Process来同时完成一个SQL查询,本文讲解Oracle数据库并行查询出错的解决方法如下: 1.错误描述 ORA-12801: 并行查询 ...
- win8oracle10g安装报错,Win8电脑安装Oracle 10g提示程序异常终止的解决方法
有win8系统用户反映说在安装Oracle 10g的时候,选择高级安装之后,就弹出一个窗口,提示程序异常终止,发生内部错误,导致Oracle 10g安装失败,该怎么解决这样的问题呢?下面随小编一起来看 ...
- oracle安装后开机很慢,Windows下安装Oracle拖慢开机速度的解决方法
环境:win7 + oracle R2 方法:将安装Oracle后自动开机启动的服务改为手动启动 步骤如下: 1.修改服务项 Ctrl + R,输入services.msc,打开服务列表,找到Orac ...
- oracle并行查询结果不唯一,Oracle数据库并行查询出错的解决方法
Oracle的并行查询是使用多个操作系统级别的Server Process来同时完成一个SQL查询,本文讲解Oracle数据库并行查询出错的解决方法如下: 1.错误描述 sql;"> ...
- oracle create user identified by,Oracle system用户忘记密码的解决方法
Oracle system用户是大家经常用到的,下面就为您介绍Oracle system用户在忘记密码情况下的解决方法,如果您在使用Oracle system用户时遇到过类似的问题,不妨一看. SQL ...
- Oracle 报错 28000原因和解决方法
Oracle 报错 28000原因和解决方法 使用PLSQL登录Oracle数据库时提示"ORA-28000:这个帐号被锁定". 出现这个问题的原因是:在Oracle databa ...
- 连接oracle的scott数据库,Oracle scott用户连接数据库出错的解决方法
Oracle scott用户连接数据库出现错误?不要紧,下面就教您一个Oracle scott用户连接数据库出错的解决方法,希望对您能有所帮助. 在安装完Oracle10g之后,想打开sql*plus ...
- linux oracle lrm00109,Oracle报ORA-01078和LRM-00109错解决方法
Oracle报ORA-01078和LRM-00109错解决方法 创建实例后,进入sqlplus启动报错: sqlplus / as sysdba; SQL*Plus: Release 11.1.0.6 ...
最新文章
- fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include stdafx.h”?
- java Lock 源码分析
- WolframAlpha 的使用
- python中x_python中round(x,[n])的使用
- 二层交换网络_网络中的第2层交换
- LeetCode 315. 计算右侧小于当前元素的个数(Count of Smaller Numbers After Self)
- 人工智能领域中声源定位的研究与发展------第一章 绪论
- 应用程序的可视化图形引擎库控件Vectordraw Developer Framework
- 拓端tecdat|matlab如何滤除低频尖峰脉冲
- 在线SAS统计分析软件使用简介(2019年最新修订)
- 【web素材】02-10款大气的购物商城网站模板
- 最近电信宽带换光纤了,免费教大家破解电信光纤猫
- java注册功能实现
- WORD文档怎么转换成EXCEL
- android 360开机启动,手机360设置开机启动项
- Matlab迭代算法实现
- Oracle19c数据库安装教程【Windows版】
- 教你亲手制作一个虚拟数字人,超全步骤详解
- python基本数据类型之字典详解
- web全栈之ECMAScript6.0