`
liulanghan110
  • 浏览: 1072721 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

最佳实践

阅读更多

在创建存储过程语句中提供必要的参数

创建存储过程语句(CREATE PROCEDURE)可以包含很多参数,虽然从语法角度讲它们不是必须的,但是在创建存储过程时提供它们可以提高执行效率。下面是一些常用的参数

容许 SQL allowedSQL

容许 SQL allowedSQL)子句的值指定了存储过程是否会使用 SQL 语句,如果使用,其类型如何。它的可能值如下所示:

NO SQL: 表示存储过程不能够执行任何 SQL 语句。

CONTAINS SQL: 表示存储过程可以执行 SQL 语句,但不会读取 SQL 数据,也不会修改 SQL 数据。

READS SQL DATA: 表示在存储过程中包含不会修改 SQL 数据的 SQL 语句。也就是说该储存过程只从数据库中读取数据。

MODIFIES SQL DATA: 表示存储过程可以执行任何 SQL 语句。即可以对数据库中的数据进行增加、删除和修改。

如果没有明确声明 allowed-SQL,其默认值是 MODIFIES SQL DATA。不同类型的存储过程执行的效率是不同的,其中 NO SQL 效率最好,MODIFIES SQL DATA 最差。如果存储过程只是读取数据,但是因为没有声明 allowed-SQL 使其被当作对数据进行修改的存储过程来执行,这显然会降低程序的执行效率。因此创建存储过程时,应当明确声明其 allowed-SQL

 

存储过程能够返回 0 个或者多个结果集。为了从存储过程中返回结果集,需要执行如下步骤:

CREATE PROCEDURE 语句的 DYNAMIC RESULT SETS 子句中声明存储过程将要返回的结果集的数量(number-of-result-sets)。如果这里声明的返回结果集的数量小于存储过程中实际返回的结果集数量,在执行该存储过程的时候,DB2 会返回一个警告。

使用 WITH RETURN 子句,在存储过程体中声明游标。

为结果集打开游标。当存储过程返回的时候,保持游标打开。

在创建存储过程时指定返回结果集的个数可以帮助程序员验证存储过程是否返回了所期待数量的结果集,提高了程序的完整性。

 

对输入参数进行必要的的检查和预处理

无论使用哪种编程语言,对输入参数的判断都是必须的。正确的参数验证是保证程序良好运行的前提。同样的,在 DB2 中对输入参数的验证和处理也是很重要的。正确的验证和预处理操作包括:

如果输入参数错误,存储过程应返回一个明确的值告诉客户应用,然后客户应用可以根据返回的值进行处理,或者向存储过程提交新的参数,或者去调用其他的程序。

根据业务逻辑,对输入参数作一定的预处理,如大小写的转换,NULL 与空字符串或 0 的转换等。

DB2 储存过程开发中,如需要遇到对空(NULL)进行初始化,我们可以使用 COALESCE 函数。COALESCE函数返回第一个非空的参数

下面是对参数初始化规则的一个总结,供大家参考:

输入参数为字符类型,且允许为空的,可以使用COALESCE(inputParameter,'')NULL转换成'';

输入类型为整型,且允许为空的,可以使用COALESCE(inputParameter,0),把空转换成0

输入参数为字符类型,且是非空非空格的,可以使用COALESCE(inputParameter,'')NULL转换成'',然后判断函数返回值是否为''

输入类型为整型,且是非空的,不需要使用COALESCE函数,直接使用IS NULL进行非空判断。

 

正确设定游标的返回类型

前面我们已经讨论了如何声明存储过程的返回结果集。这里我们讨论一下结果集返回类型的问题。结果集的返回类型有两种:调用者(CALLER) 和客户应用(CLIENT)

代码中rs1游标的DECLAER语句中包含WITH RETURN TO CLIENT子句,表示结果集返回给客户应用(CLIENT)rs2游标的DECLARE语句中包含WITH RETURN TO CALLER子句,表示结果集返回给调用者(CALLER)

游标返回给调用者(CALLER)表示由存储过程的调用者接收结果集,而不考虑调用者是否是另一个存储过程,还是客户应用。 

分享到:
评论

相关推荐

    课程开发关键第一步:最佳实践萃取.pdf

    课程开发关键第一步:最佳实践萃取 课程设计与开发是把优秀员工的经验与方法复制到普通员工的身上,使其成长为优秀的员工,进而解决问题,提升工作绩效。在课程设计与开发的过程中,最佳实践萃取是第一个关键环节。...

    HUAWEI-敏捷园区网络解决方案设计指南和最佳实践

    本文档可以作为HLD和LLD设计阶段的参考,详细介绍了敏捷园区网络的方案架构、设计方法及最佳实践。最佳实践都是来自实际项目交付的经验总结。通过遵循本文档的最佳实践,网络工程师可以提高项目交付的效率,同时简化...

    COBIT行业应用案例 银行业IT治理最佳实践(带完整目录书签).pdf

    标题所涉及的知识点为:COBIT行业应用案例,特别是银行业IT治理最佳实践。COBIT(Control Objectives for Information and Related Technology)是一个权威的信息技术治理框架,由ISACA(Information Systems Audit ...

    OpenAI:GPT 最佳实践中文大白话版本.pdf

    【OpenAI:GPT最佳实践中文大白话版本】 OpenAI发布的《GPT最佳实践》文档,旨在提供与ChatGPT等基于GPT技术的模型交互的实用技巧,帮助用户获得更高质量的输出结果。这份文档用通俗易懂的语言编写,适合所有人学习...

    银行业IT治理最佳实践.pdf

    银行业IT治理最佳实践是当今银行业在信息技术应用中必须面对的重要课题。随着信息技术的迅猛发展,尤其是人工智能、区块链、云平台等新技术的普及,银行业务正经历着前所未有的数字化转型。在这一转型过程中,如何...

    《OpenResty最佳实践》 .pdf

    《OpenResty最佳实践》这本书籍,旨在向读者介绍OpenResty的使用方法和最佳实践,从而让读者能够充分利用OpenResty进行高效、安全的Web开发。 书籍涵盖了多个知识点,从最基础的Lua脚本语言学习,到OpenResty的高级...

    Oracle RAC 12c运维最佳实践指南.pdf

    Oracle RAC 12c 运维最佳实践指南 Oracle RAC 12c 是一种高可用、高性能的集群解决方案,旨在实现数据库的高可用性和可扩展性。本文将对 Oracle RAC 12c 运维最佳实践指南进行解读,总结出相关的知识点。 一、 ...

    《C++编程规范101条规则、准则最佳实践》中文版

    《C++编程规范:101条规则准则与最佳实践》中,两位知名的C++专家将全球C++界20年的集体智慧和经验凝结成一套编程规范。这些规范可以作为每一个开发团队制定实际开发规范的基础,更是每一位C++程序员应该遵循的行事...

    Spring Boot 最佳实践.pdf

    Spring Boot 最佳实践.pdf Spring Boot 最佳实践.pdf Spring Boot 最佳实践.pdf Spring Boot 最佳实践.pdf Spring Boot 最佳实践.pdf Spring Boot 最佳实践.pdf

    SQL Server 最佳实践分析器 [免费版]

    Best Practices Analyzer Tool for Microsoft SQL Server 2000是Microsoft SQL Server开发团队开发的一个数据库管理工具,可以让你检测设计的数据库是否遵循SQL Server操作和管理的最佳实践准则。这些准则公认有助于...

    PHP+核心技术与最佳实践.pdf

    不过,根据标题“PHP+核心技术与最佳实践.pdf”可以推测文档内容与PHP语言的核心技术以及在实际开发中的最佳实践有关。在进行这部分内容的生成时,我可以依照这些推测来介绍PHP的核心技术和最佳实践的相关知识点。 ...

    云原生最佳实践合集.pdf

    【云原生最佳实践合集】是一份由腾讯云编撰的关于云原生技术实践的综合指南,其中涵盖了多个领域的最佳实践案例,旨在帮助企业利用云原生技术优化架构,提高系统性能,实现业务的高效运行。以下是其中几个关键知识点...

    PHP+核心技术与最佳实践

    本书《PHP+核心技术与最佳实践》是一本专注于PHP技术的深入学习资料。在互联网技术领域,PHP作为一种广泛使用的服务器端脚本语言,因其易学易用以及高效率开发而受到大量开发者的青睐。本书主要面向那些希望通过学习...

    廖雪峰 Spring 2.0 核心技术与最佳实践 高清扫描版

    《Spring 2.0 核心技术与最佳实践》是由知名IT教育家廖雪峰编写的教程,旨在为从初学者到高级工程师提供全面而深入的Spring 2.0框架理解与应用指导。Spring框架是Java开发中的核心工具,尤其在企业级应用中广泛使用...

Global site tag (gtag.js) - Google Analytics