`
- 浏览:
48753 次
- 性别:
- 来自:
衡阳
-
在编写存储过程的时候出现了这样的问题:
1、循环游标取出字段的值做以下操作时:
写成:
if nvl(c1.text,'')<>'' then
语句1; --当c1.text有值时,if中的语句1不执行
end if;
而写成:
if nvl(c1.text,' ')<>' ' then
语句1; --当c1.text有值时,if中的语句1执行
end if;
2、今天在存储过程中对某个变量做非空判断如下:
--dictionaryId 传入参数
dicId varchar2(20);
begin
if dictionaryId = null or dictionaryId='' then
dicId:='30298'; --报警时间
else
dicId:=dictionaryId;
end if;
编译时警告:hint:comparison with null in '存储过程名';报警的就是红色字体所在的部分,修改为: if dictionaryId is null or dictionaryId=' '/*空格*/ then 就不报警了,所以做非空判断时,正确的写法是:dictionaryId is null 而不能写成: dictionaryId='',即使null和''在oracle中似乎是等同的;空串判断就是dictionaryId=' '/*空格*/;
3、过程中的临时变量,初始化时
strFileName :='';
在调试存储过程时,该变量在未变化前,查看它的值时总是null.
问:
1、临时变量初始化赋值时该赋成'' 还是 ' '?
2、在循环中,一变量需重复使用,在循环结束前需置空,又该写成什么样啊?
5、今天碰到一個問題,一個oracle存儲過程中的一個參數之前一直傳的是數字,現在有一些特殊的情況需要傳字符,這樣就會報
ORA-06502: PL/SQL: numeric or value error: character to number conversion error的錯誤
if nvl(c1.template_detail_id,'')<>'' then
if if nvl(c1.template_detail_id,' ')<>' ' then--报以上错误
总结:c1.template_detail_id为数字的时候不能写成下一种格式!!!
正确的写法是:if nvl(c1.template_detail_id,0)<>0 then
6、v_summary varchar2(1000); --定义变量
begin
select summary into v_summary from tab_sum;
end;
当summary为null时,该句总是报错,无法往下执行,
尝试初始化变量(v_summary :=' ';),在语句中加nvl[nvl(summary,' ')]还是出错。
解决:select nvl(max(summary),'') from tab_sum;
7、网上遇到一个典型的问题:我都已经用nvl函数了,为何还是有ora-01400错误呢?
insert into tab_test1 nologging
select a.subscription_id,a.account_id,a.customer_id,a.subs_status,a.acct_type,a.service_num,a.service_type,a.service_status,a.rate_class,
a.status_chg_date,a.active_date,a.create_date,a.region_id,
(select nvl(rele_office_id,'0') from tab_test3 where account_id=a.account_id) rele_office_id,
a.operator_id,a.reseller_id,
(select nvl(pay_type,0) from tab_test3 where account_id=a.account_id) pay_type,a.last_oper_type,
(select nvl(county_id,0) from tab_test3 where account_id=a.account_id) county_id,
a.inactive_date
from tab_test2 a
ORA-01400: cannot insert NULL into("OSS"."tab_test1"."RELE_OFFICE_ID")
请问这是什么原因?
楼主挺厚道,还把结果给公布了:
找到解决办法了,谢谢!
(select nvl(rele_office_id,'0') from tab_test3 where account_id=a.account_id) rele_office_id,
改为
nvl((select rele_office_id from tab_test3 where account_id=a.account_id),'0') rele_office_id,
即可!
8、过程中select into中的问题
select 字段 into 变量 from 表 where 条件;
当根据条件查询出的记录数为0时,into变量会报这个错ORA-01403: no data found,所以要做此类操作时,先查询记录数是否大于0再执行select into 变量的语句。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
总结来说,由空格构成的串和空串在字符串处理中是两个独立的概念,而在二叉树和二叉查找树等数据结构中,我们关注节点的结构、遍历方法以及查找效率。这些基本概念构成了计算机科学中的基础,对于理解和操作数据至关...
Sybase 中同样不存在长度为 0 的字符串,但是与 Oracle 不同的是,Sybase 并不将空串视作 NULL,而是视作与只包含一个空格的字符串等价。 Oracle 中 null 的长度是一些文章上说 null 长度为零(×),其实长度也为...
5. 空与空串:MySQL 中空与空串是两个不同的东西,而在 Oracle 中将 null 与空串做了同样的处理。 6. rs.isLast():当数据库为 MySQL 时,可以使用 `Connection.prepareStatement(str1)`,而在 Oracle 中必须使用 `...
需要注意的是,`VARCHAR` 在Oracle中是被废弃的类型,尽管当前版本仍然支持,但未来可能会不再支持,因此建议使用`VARCHAR2`。 **Varchar2** `VARCHAR2` 同样用于存储变长的字符串数据,最大长度同样为4000字节。...
根据给定的文件信息,我们可以总结出以下关于 Delphi 分割...通过以上分析,我们可以看出该函数实现了一种较为常见的字符串分割操作,并且在处理过程中注意到了空字符串的情况,从而确保了返回结果的有效性和准确性。
解析:空串和空格串是不同的,空串是长度为零的串,而空格串是由一个或多个空格字符组成的串,它的长度大于零。 3.串是一种特殊的线性表,其特殊性体现在____:B. 数据元素是一个字符 解析:串的特殊性体现在数据...
PolarDB-O 支持 Oracle 数据库的多种语法,包括 PL/SQL、Package、VPD、系统视图和系统包、DBLINK、NULL 和空串兼容等,能够满足多种应用场景的需求。 函数兼容 PolarDB-O 支持 Oracle 数据库的多种函数,包括 ...
9.在空串和空格串中,长度不为 0 的是空格串。 在空串和空格串中,长度不为 0 的是空格串。空串的长度为 0,而空格串的长度大于 0。 10.两个串相等是指两个串相长度等,且对应位置的字符也相等。 两个串相等是...
空串与空格串在实际应用中有着不同的含义和处理方式。例如,在文本处理中,空串通常表示字符串的边界,而空白串可能需要被特殊处理或去除。 2. **串操作**:串的模式匹配是一种常见的操作,其中子串作为模式在主串...
当有两个串`p`和`q`时,寻找`p`在`q`中首次出现位置的运算称为**模式匹配**或**子串定位**。这种运算是串处理中最常见的操作之一,通常可以通过多种算法实现,如朴素匹配算法、KMP算法等。 #### 4. 串作为特殊的...
需要注意区分空串和空格串,两者在字符组成上是有区别的,空串没有任何字符,而空格串至少包含一个空格。 串的抽象数据类型(ADT)定义如下: - 数据对象:D={ai|ai∈Character set, (i=1,2,...,n, n≥0)},其中...
- 空串与空格串是不同的,空串不包含任何字符,而空格串包含一个空格。 - 任意串都是其自身的子串,空串是任意串的子串。 2. **串的表示和实现**: - **顺序存储**:在内存中连续分配空间存储字符,便于随机访问...
因此,空串和空格串是不同的。 2. **串的存储方式**:主要有两种基本的存储方式,即**顺序存储**(如数组)和**链式存储**(如链表)。顺序存储中,字符连续存储在内存中;链式存储中,字符通过指针链接。 3. **模式...
在这个例子中,我们使用了ES6的解构赋值和对象的浅拷贝来保留原对象的其他属性。 最后,我们来看一下压缩包中的`main.js`文件,这很可能是实现上述功能的源代码。`README.txt`文件通常用来提供项目说明或使用指南,...
- 空串和空格串:空串无字符,空格串含有空格。 - 串常量和串变量:串常量不可变,串变量可变。 - 主串和子串:主串包含子串,子串是主串的一部分。 - 静态分配和动态分配的顺序串:静态分配在编译时确定大小,...
4. 由一个或多个空格构成的串称为空格串,它的长度为该串中的空格数。 5. 广义表((a))的表头是(a)。 6. 广义表((a))的表头是(a)。 7. 广义表((a))的表尾是()。 8. 广义表((a), a)的表头是(a)。 ...
空串和空格串是不同的概念,空格串包含一个或多个空格字符,而空串不包含任何字符。 以上就是基于给定文档中涉及的数据结构知识点的详细解析,这些内容对于理解和解决实际问题至关重要,也是数据结构考试的重点。...
在编译原理中,文法化简是构造和优化编译器前端的重要步骤,它涉及到对形式语言的文法进行简化,以便更高效地处理和分析输入代码。本主题主要关注四种特定的文法化简操作:消除空产生式、消除单元产生式以及消除两类...
在处理JSON数据时,有时我们需要对其中的空串或值进行处理,比如移除空值、更改key/value等。本文将详细介绍如何在JSON字符串中进行这些操作。 首先,我们来看如何删除JSON对象中的value值。在JavaScript中,我们...