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 函数 “判断数据表中不存在的数据,才允许通过”的更多相关文章

  1. Excel在数据表中悬停鼠标显示数据值

    打开一个实例文档,鼠标移动到数据表中,在柱状图上中悬停鼠标,可以看到没有显示数据的值. 鼠标单击左上角的<文件>按钮. 然后单击<选项>按钮. 在弹出的excel选项对话框中单 ...

  2. SqlServer执行Insert命令同时判断目标表中是否存在目标数据

    针对于已查询出数据结果, 且在程序中执行Sql命令, 而非数据库中的存储过程 INSERT INTO TableName (Column1, Column2, Column3, Column4, Co ...

  3. C#操作数据表中XML格式的数据

    以前还真没有见过数据表中存储XML格式的数据,刚开始听说的时候,还以为是数据表中有XML的字段类型, 再了解,其实也就是字符串类型的,只不过字符串的格式是XML格式的.确实孤陋寡闻!汗... (可添加 ...

  4. Oracle 函数 “把当前的用户(审核人,审核通过后)插入到数据表中”

    create or replace function mcode_apply_update_personnel(p_mca_no VARCHAR2, -- 参数(实参) p_action VARCHA ...

  5. Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)

    应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...

  6. Oracle使用游标删除所有用户数据表中的所有记录脚本

    应用场景:因为数据库中的数据涉及机密信息,希望一次性能删除掉所有数据,只保留数据表结构,供新项目开发程序用 测试结果:经查询已删除所有数据 存在问题:数据表如果存在外键的话下面脚本可能执行不成功,请自 ...

  7. Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...

  8. Oracle 数据库表中已有重复数据添加唯一键(唯一约束)

    Oracle 数据库表中已有重复数据添加唯一键(唯一约束) 问题描述 以 demo 举例,模拟真实场景. 表 TEST_TABLE 有如下字段和数据:id 是主键,code 没有设置键和索引 ID C ...

  9. Oracle 取两个表中数据的交集并集差异集合

    Oracle 取两个表中数据的交集 关键字: Oracle 取两个表中数据的交集 INTERSECT Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要 ...

随机推荐

  1. activity 与 service 之间的通信

    activity和service通信:通过binder 举个我实际项目中的例子:在service中下载更新应用 首先是下载更新apk的service: public class UpdateVersi ...

  2. Google Gson用法

    the latest version is 2.8.0. If you're using Gradle, add the following line: compile 'com.google.cod ...

  3. bzoj 4451 : [Cerc2015]Frightful Formula FFT

    4451: [Cerc2015]Frightful Formula Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 177  Solved: 57[Sub ...

  4. ASP.NET MVC API 接口验证

    项目中有一个留言消息接口,接收其他系统的留言和展示留言,参考了网上的一些API验证方法,发现使用通用权限管理系统提供的验证方法最完美(http://www.cnblogs.com/jirigala/p ...

  5. 【左偏树】【P3261】 [JLOI2015]城池攻占

    Description 小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑士攻占 n 个城池.这 n 个城池用 1 到 n 的整数表示.除 1 号城池外,城池 i 会受到另一座城池 fi 的管辖,其 ...

  6. Tensorflow训练神经网络

    以下代码摘自<Tensorflow实战Google 深度学习框架>. 由于这段代码包含了激活函数去线性化,多层神经网络,指数衰减学习率,正则化防止过拟合,滑动平均稳定模型等手段,涵盖了神经 ...

  7. vi的一些使用技巧

    1.vi 编辑器中跳到文件的第一行:键盘按下 小写 gg   vi 编辑器跳到文件最后一行:键盘按 shift + g (等于G) 跳转到当前行的第一个字符按0,跳转到当前行的最后一个字符按shift ...

  8. python学习(20) 网络编程

    原文链接:http://www.limerence2017.com/2018/01/02/python20/ python 网络编程和基本的C语言编程一样,效率不是很高,如果为了封装通信库建议采用C/ ...

  9. 八、java常用类

    目录 一.字符串相关类 String类 StringBuffer类 二.基本数据类型包装类 三.Math类 四.File类 五.枚举类 一.字符串相关类 1.String类 java.lang.Str ...

  10. CSS--overflow和hover

    一.Overflow overflow 属性规定当内容溢出元素框时发生的事情. 当插入的一张图片大小超过了元素本身大小,就会将元素撑大 <!DOCTYPE html> <html l ...