Oracle 函数 “判断数据表中不存在的数据,才允许通过”
create or replace function mca_detail_material_val(p_material_code VARCHAR2, --实参
p_material_name VARCHAR2,
p_mca_no VARCHAR2
)
RETURN varchar2 AS --物料编码/名称的验证,数据表(MATERIAL)中 不存在 该物料编码/名称,允许通过,填其他值都不允许通过 v_count1 NUMBER; -- 形参
v_count2 NUMBER;
v_count3 NUMBER;
v_count4 NUMBER; CURSOR get_wl_material_code1 IS
SELECT count(m.material_code) -- count()函数:查询出来的记录条数(记录数)
FROM MATERIAL m
WHERE m.material_code = p_material_code; CURSOR get_wl_material_code2 IS
SELECT count(material_code)
FROM mca_detail m
WHERE m.material_code = p_material_code AND m.mca_no <> p_mca_no;
-- m.mca_no <> p_mca_no:在编辑时,排除此单号(不做比较)---物料编码
CURSOR get_wl_material_name1 IS
SELECT count(m.material_name)
FROM MATERIAL m
WHERE m.material_name = p_material_name; CURSOR get_wl_material_name2 IS
SELECT count(m.material_name)
FROM mca_detail m
WHERE m.material_name = p_material_name AND m.mca_no <> p_mca_no;
BEGIN -- m.mca_no <> p_mca_no:在编辑时,排除此单号(不做比较)---物料名称
OPEN get_wl_material_code1;
FETCH get_wl_material_code1 INTO v_count1;
CLOSE get_wl_material_code1; OPEN get_wl_material_code2;
FETCH get_wl_material_code2 INTO v_count3;
CLOSE get_wl_material_code2; OPEN get_wl_material_name1;
FETCH get_wl_material_name1 INTO v_count2;
CLOSE get_wl_material_name1; OPEN get_wl_material_name2;
FETCH get_wl_material_name2 INTO v_count4;
CLOSE get_wl_material_name2; IF v_count1+v_count3 <> 0 THEN
RETURN ''; -- 错误信息码(信息码表) 该信息码对应的内容:物料编码已存在,不允许出现相同值,请确认该编码的真确性!
ELSIF v_count2+v_count4 <> 0 THEN
RETURN ''; -- 错误信息码(信息码表) 该信息码对应的内容:物料名称已存在,不允许出现相同值,请确认该编码的真确性!
END IF; RETURN ''; end mca_detail_material_val;
注:如需测试该函数,请复制到Oracle数据库中,右击函数名“mca_detail_material_val”,选择“test” 进行测试,测试时记得把相应的表名及字段换成自己建立的
|
原创作者:DSHORE 出处:http://www.cnblogs.com/dshore123/ 欢迎转载,转载务必说明出处。(如果本文对你有用,可以点击一下右下角的 推荐,谢谢!) |
Oracle 函数 “判断数据表中不存在的数据,才允许通过”的更多相关文章
- Excel在数据表中悬停鼠标显示数据值
打开一个实例文档,鼠标移动到数据表中,在柱状图上中悬停鼠标,可以看到没有显示数据的值. 鼠标单击左上角的<文件>按钮. 然后单击<选项>按钮. 在弹出的excel选项对话框中单 ...
- SqlServer执行Insert命令同时判断目标表中是否存在目标数据
针对于已查询出数据结果, 且在程序中执行Sql命令, 而非数据库中的存储过程 INSERT INTO TableName (Column1, Column2, Column3, Column4, Co ...
- C#操作数据表中XML格式的数据
以前还真没有见过数据表中存储XML格式的数据,刚开始听说的时候,还以为是数据表中有XML的字段类型, 再了解,其实也就是字符串类型的,只不过字符串的格式是XML格式的.确实孤陋寡闻!汗... (可添加 ...
- Oracle 函数 “把当前的用户(审核人,审核通过后)插入到数据表中”
create or replace function mcode_apply_update_personnel(p_mca_no VARCHAR2, -- 参数(实参) p_action VARCHA ...
- Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)
应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...
- Oracle使用游标删除所有用户数据表中的所有记录脚本
应用场景:因为数据库中的数据涉及机密信息,希望一次性能删除掉所有数据,只保留数据表结构,供新项目开发程序用 测试结果:经查询已删除所有数据 存在问题:数据表如果存在外键的话下面脚本可能执行不成功,请自 ...
- Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...
- Oracle 数据库表中已有重复数据添加唯一键(唯一约束)
Oracle 数据库表中已有重复数据添加唯一键(唯一约束) 问题描述 以 demo 举例,模拟真实场景. 表 TEST_TABLE 有如下字段和数据:id 是主键,code 没有设置键和索引 ID C ...
- Oracle 取两个表中数据的交集并集差异集合
Oracle 取两个表中数据的交集 关键字: Oracle 取两个表中数据的交集 INTERSECT Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要 ...
随机推荐
- EL与OGNL以及值栈的理解
这里先添加下在项目遇到的问题: 这两天在做论坛项目的时候,犯了一个错误:将数据放入值栈中,结果jsp页面获取不到. 困扰了许久: 总结如下: (1)每个action对应相应页面的值栈中值的获取,在属于 ...
- 1.Linux的发展历史以及 GNUGPL和open source
发展历史: 20实际60年代:那时候的计算机一般只有在军事,科研以及学术院校才能见到,不是一般人能接触的东西.开始的时候计算机的时候的输入靠卡片阅读器,即程序开发者在卡片上打洞放入卡片阅读器上输入,在 ...
- win7,Ubuntu 12.04 双系统修改启动项顺序三方法
修改启动项顺序的三种方法 本文所涉及的方法都是在Ubuntu的安装时将引导加载程序grub安装在了整个硬盘(即MBR内),即开机以grub引导. 方法1在Ubuntu终端下输入:sudo mv /et ...
- Linux下安装Python3和django并配置mysql作为django默认服务器
我的操作系统为centos6.5 1 首先选择django要使用什么数据库.django1.10默认数据库为sqlite3,本人想使用mysql数据库,但为了测试方便顺便要安装一下sqlite开发包 ...
- day1 java基础语法
一.关键字:java关键字有:abstract boolean break byte case catch char class const continue default do double el ...
- 用nginx搭建简单的文件下载服务器
server { listen 80; #端口 server_name localhost; #服务名 charset utf-8; # ...
- centos7.2 rabbitmq3.6.2源码部署
1.安装所有依赖包yum install -y gcc ncurses ncurses-base ncurses-devel ncurses-libs ncurses-static ncurses-t ...
- java字节码文件 helloworld
Java代码 \\A.java public class A{} 1 2 1 2 javac A.java \\得到 A.class javap -v A.class 下面是javap工具帮我们生成的 ...
- bzoj千题计划132:bzoj1189: [HNOI2007]紧急疏散evacuate
http://www.lydsy.com/JudgeOnline/problem.php?id=1189 二分答案 源点向人连边,流量为1 门拆为mid个点,同一个门的第j个点向第j+1个点连边,流量 ...
- httpclient4.5 连接池的封装
随着微服务的流行,服务之间的http调用越来越多,遇到的问题也比较多,写这边文章的目的也是将自己遇到的坑和解决方案跟大家分享 一.为什么要用Http连接池 1.降低延迟:如果不采用连接池,每次连接发起 ...