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. 【题解】CF1154

    A Description 有三个正整数 \(a,~b,~c\),现在给定 \(x_1~=~a + b,~x_2~=~a + c, x_3~=~b + c, ~x_4~=~a + b + c\),请求 ...

  2. hdu 6311 欧拉回路

    题意:求一个图(不一定联通)最小额外连接几条边,使得可以一笔画出来 大致做法 1.找出联通块 2.统计每一个连通块里面度数为奇数的点的个数, 有一个性质 一个图能够用一笔画出来,奇数点的个数不超过2个 ...

  3. 【Asp.net入门05】第一个ASP.NET 应用程序-测试Asp.net程序

    测试示例应用程序 本部分内容: ASP.NET应用程序测试方法 web窗体访问过程 Visual Studio工具栏上有一个下拉列表,其中列出了工作站上已安装的浏览器的名称(单击浏览器名称右侧的向下箭 ...

  4. 解决ImportError: cannot import name HTTPSHandler

    /usr/local/python3.5/bin/pip3.5 install flask 的时候遇到了cannot import name HTTPSHandler 1. 原因在于openssl,o ...

  5. NO.3day 网络基础

    网络基础 1.互联网协议 概念:通过互联网传输数据的标准. 功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准. 2.OSI五层模型 应用层--传输层--网络层--数 ...

  6. Tomcat权威指南-读书摘要系列4

    4. Tomcat的性能调校 测量Web服务器的性能 测试负载的工具 Apache Benchmark Siege JMeter

  7. jar包读取包内properties文件

    properties位于src目录下 project --src -----package -----test.properties Properties p = new Properties(); ...

  8. bzoj千题计划112:bzoj1022: [SHOI2008]小约翰的游戏John

    http://www.lydsy.com/JudgeOnline/problem.php?id=1022 http://www.cnblogs.com/TheRoadToTheGold/p/67448 ...

  9. web打印难题—背景不打印的简单不完美解决方案

    web打印在一些开发中是比较常见的需求,最简单的办法是使用css print进行控制:对于一些建议可以参考http://slodive.com/web-development/css-print-pa ...

  10. 训练赛第一场A题 (ZOJ 2313)

    解题报告:n个人围坐成一圈,并且将这n个人从1到n编号,然后编号为1 的人手上有一个物品,将这个物品往向左传递给第k个人,1<=k<=n/2,当这个物品再次传到编号为1 的人的手上时,游戏 ...