`
kingsui
  • 浏览: 193439 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

采用过程实现数据库约束完整性

SQL 
阅读更多

      约束的完整性,是数据库所具有的一大特性,但在最近的一个数据库转换项目中,确要通过程序的方式,人为的去实现.有些不太明白设计者的想法.需求是这样的,若省市表中的记录被别的表引用,则不能进行删除操作(表之间未建立任何约束).无奈之举,最后决定用存贮过程的方式去实现,效率会高一些,减少开发量,也有利于日后的维护.

CREATE OR REPLACE PROCEDURE p_isCityUsed(
    citycode  varchar,
    ret_code  out int      /*100--存在;99--不存在*/
  ) 
AS
total number;
BEGIN  
    BEGIN   --成员单位表--
      select COUNT(T.CMP_ID) INTO total from bs_company t WHERE T.CITY = citycode ;
      IF  total > 0 THEN
          ret_code:= 100 ;
          RETURN ;
      END IF;    
    END;

    BEGIN   --往来客户信息表--
      select COUNT(T.CUSTOMER_ID) INTO total from bs_Customer t WHERE T.CITY = citycode ;
      IF  total > 0 THEN
          ret_code:= 100 ;
          RETURN ;
      END IF;    
    END;  
    
    BEGIN   --分支机构信息表--
      select COUNT(T.ORGAN_ID) INTO total from pm_Organ t WHERE T.CITY_ID = citycode ;
      IF  total > 0 THEN
          ret_code:= 100 ;
          RETURN ;
      END IF;    
    END; 

    BEGIN   --业务申请单--
      select COUNT(T.BILL_ID) INTO total from bk_BillRequest t WHERE T.PAYEE_CITY = citycode ;
      IF  total > 0 THEN
          ret_code:= 100 ;
          RETURN ;
      END IF;    
    END;  
    
    BEGIN   --银行账号表--
      select COUNT(T.BANKACC_ID) INTO total from ac_bankaccount t WHERE T.BANK_CITY = citycode ;
      IF  total > 0 THEN
          ret_code:= 100 ;
          RETURN ;
      END IF;    
    END; 

   IF total = 0 THEN
        ret_code:= 99 ; 
        RETURN ;
   END IF;  
   
   EXCEPTION
     WHEN OTHERS THEN
        ret_code:= 101 ;  --执行失败--       
   
 END ; 

 测试存贮过程:

    方式一(按位置传递):

   

   SQL>variable a1 number;
   SQL>exec p_isCityUsed('0123',:a1);

 

    方式二(按名称传递):

   

   SQL>DECLARE
   SQL>citycode VARCHAR2(100);
   SQL>ret_code NUMBER ;
   SQL>BEGIN
   SQL>p_isCityUsed(citycode => citycode ,ret_code => ret_code);
   SQL>END ;

   目前这种方式只能将返回值通过控制台输出:

      --SET SERVEROUTPUT ON ;
      --DBMS_OUTPUT.PUT_LINE('共有记录'||total||'条!'||',返回值为:'||ret_code);

 

   方式三:在PL/SQl Dev 中, 通过"测试"选项来做(推荐).

 

 

分享到:
评论

相关推荐

    数据库的完整性约束数据库的完整性约束

    数据库的完整性约束是保证数据的正确性、完整性和一致性的重要手段,它可以分为实体完整性约束、参照完整性约束和用户自定义完整性约束三个方面。通过定义主码、外部码和 CHECK 约束等,可以确保数据库中的数据满足...

    数据库实验八 完整性约束的实现

    ### 数据库实验八:完整性约束的实现 #### 实习目的 通过本次实验,学习者将掌握在SQL中实现数据完整性的方法,并进一步加深对关系数据模型中的三类完整性约束的理解。这不仅有助于确保数据的质量与一致性,还能...

    数据库完整性约束条件

    数据库完整性约束条件是确保数据库中数据准确无误和一致性的重要机制。这些约束条件分为静态和动态两类,分别针对数据在不同状态和变化过程中的规则。完整性检查主要关注三个方面:关系、元组和列。 首先,静态列级...

    数据库\试验6 数据库完整性

    ### 数据库完整性试验知识点 ...通过以上介绍,我们可以看出,无论是使用图形界面还是T-SQL脚本,都能够有效地实现对数据库中各种完整性约束的管理,从而确保数据的一致性和准确性。这对于维护高质量的数据集至关重要。

    实验3数据库的安全性和完整性.doc

    数据库安全性和完整性实验报告 数据库安全性和完整性是数据库管理系统中两个非常重要的概念。本次实验主要通过三个关系模式,Student、Course和SC,来掌握实体完整性规则、参照完整性规则和用户定义完整性的定义...

    Oracle数据库的完整性约束规则详解

    ### Oracle数据库的完整性约束规则详解 #### 一、概述 Oracle数据库通过实施一系列的完整性约束规则来维护数据的准确性和一致性。这些约束规则是数据库设计中的核心组成部分,旨在防止不符合预定义规则的数据进入...

    数据库实验3报告(数据完整性与安全性控制).docx

    本次实验主要涉及了数据库中关于数据完整性和安全性的关键概念和操作,具体包括数据约束的设定、表的创建与删除、权限的管理等多个方面。以下是对实验内容的详细解释: 1. 数据完整性: - 非空约束:非空约束(NOT...

    更新数据库、视图及数据库完整性.doc

    在实验过程中,遇到的问题主要是由于对数据库约束理解不足导致的数据插入冲突。解决这些问题需要对数据库设计和SQL语句有深入的理解,以及通过查阅文档和实践来逐步解决。 通过这个实验,学生不仅学习了SQL的基本...

    基于SQL Server数据库完整性约束的几点探讨.pdf

    本文探讨了SQL Server数据库中的完整性约束,讨论了数据库完整性约束的重要性、分类和设计方法,并以T-SQL语句对数据库完整性约束进行了设计,实现了在数据库中存储数据的完整性、正确性和一致性。 一、 数据库完整...

    使用T-SQL实现数据库约束的方法.pdf

    T-SQL在数据库设计中扮演着至关重要的角色,特别是在实现数据库约束方面。约束是保证数据安全、准确性和一致性的关键机制。T-SQL提供了多种数据完整性约束的实现方式,包括列约束和表约束,这些约束分别对应于不同的...

    国家开放大学 数据库运维 形考3 数据库安全性与完整性控制实验

    数据库安全性与完整性控制是一个持续的过程,需要数据库管理员和开发人员不断地实践和更新知识,以应对不断变化的技术需求和安全挑战。本实验不仅为学生提供了实践的机会,而且强调了数据库安全性和完整性控制的重要...

    SQL Sever 2000中基于触发器实现数据库的完整性.pdf

    数据库完整性实现之触发器应用 在数据库管理系统中,数据的完整性是非常重要的。它是指数据库中的数据是否满足一定的约束条件,例如数据的格式、范围、关系等。然而,在实际应用中,数据的完整性往往受到各种因素的...

    数据库完整性和数据安全性实验

    数据库完整性实验中,学生需要使用 Transact-SQL 设计规则、缺省、约束和触发器,并通过 SQL Server 企业管理器定义它们。实验步骤包括:定义学生表中所在系属性为“计算机系”的缺省,并捆绑缺省到学生表中;利用...

    数据库完整性与安全性实验

    ### 数据库完整性与安全性实验知识点概述 #### 一、数据库完整性实验 **1. 完整性的概念** 数据库完整性是指数据库中的数据保持正确性、一致性和有效性。它确保了数据库中的信息是准确无误的,并且能有效地防止...

    第五章数据库的完整性课件

    5. 触发器:触发器是数据库中预定义的存储过程,会在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行,用于实现更复杂的业务逻辑和完整性规则。它们可以用来强制执行那些无法通过简单约束条件表达的...

    基于MySQL数据库实施完整性约束的研究.pdf

    本文主要研究 MySQL 数据库中实施完整性约束的方法,介绍了 MySQL 中五种常用的约束:主键约束、外键约束、唯一键约束、非空约束和默认值约束。通过对这些约束的详细介绍,文章旨在帮助开发者更好地理解和应用 MySQL...

    数据库同步过程中一致性和完整性的保证

    总结来说,保证数据库同步过程中的一致性和完整性是一项复杂而重要的任务,需要结合事务处理、完整性约束、错误处理和高级工具来实现。理解这些概念和实践方法对于构建高效、可靠的分布式系统是至关重要的。

    数据库综合实验数据库的完整性控制

    在实现这些完整性约束时,可以使用数据库管理工具(如企业管理器)或直接编写SQL语句。例如,`ALTER TABLE`语句用于添加、修改或删除约束。对于默认约束,可以使用`ALTER TABLE...ADD CONSTRAINT...DEFAULT`;检查...

    数据库系统之实体完整性约束.pdf

    本文主要探讨实体完整性约束,这是数据库设计的基础,通常通过主键来实现。 1. 实体完整性约束: 实体完整性是指数据库中的每个表都应有一个或多个字段作为唯一标识,称为主键。主键的值必须是唯一的,不允许为空。...

Global site tag (gtag.js) - Google Analytics