关闭

35.表级和行级DML触发器

一、引言         触发器类似于过程和函数,都有程序主题部分(声明段、可执行段、异常处理段),但是调用其和函数不同,触发器为依靠事件执行的,且由于其是隐式调用的,触发器没有参数。         本文主要介绍oracle中的DML触发器,顾名思义就是执行DML语句对表进行增、改、查时执行的触发器。         我们先创建如下的表myemp: create table myemp ...
阅读(568) 评论(0)

34.C#调用Oracle中的包

在上一文中我们介绍了PLSQL中包创建方法,本文介绍在C#中调用包中存储函数和存储过程的方法,以上一文中我们封装到emp_pack包中的get_emp_func函数为例,我们介绍C#中调用该函数的方法。         首先,emp_pack包体的定义如下: create or replace package body emp_pack as function get_emp_func(...
阅读(798) 评论(0)

33.PLSQL中的包

一、引言         PLSQL中的包类似于C++中的类,在包中我们可以定义变量、游标、存储过程、存储函数等等。它实现了将上述类型统一创建和管理,同时在不同包之间这个PLSQL的对象不会存在命名冲突问题。包的定义包含两部分,包头和包体,有点类似于C++中的类的头文件和cpp文件。在包头中我们对变量、存储过程等等进行声明,而在包体中是对他们的实现。下面,我们在emp表的基础之上介绍包的用法。如...
阅读(542) 评论(0)

32.C#调用Oracle的存储过程和函数

一、引言                 在前面的文章中我们分别讲解了Oracle中存储过程和存储函数创建的方法,本文主要介绍在C#中调用之前创建的存储过程和函数的方法。 二、C#调用带参的存储过程         首先,假设我们有以下数据表emp:       并创建了存储过程insert_emp: create or replace procedure insert_emp...
阅读(481) 评论(0)

31.PLSQL中的函数

一、存储函数的定义         函数是PLSQL中另一种子程序,与存储过程不同的是,存储函数具有返回值,就像C/C++中的函数一样,可以通过函数返回某些值,我们先来看下下面定义的一个返回雇员薪资的函数: create or replace function get_income(v_empno emp.empno%type) return number as v_income emp.s...
阅读(801) 评论(0)

30.PLSQL中的过程

一、引言         过程,是对一组PLSQL语句的封装,以达到代码复用的目的。创建一个过程之后,它便存储在了数据库中,我们随时随地可在其他PLSQL的数据块中进行引用。 二、创建一个简单的存储过程         接下来,我们先创建一个简单的显示“Hello World”的存储过程,代码如下: create procedure print_proc as begin dbms_o...
阅读(666) 评论(0)

29.PLSQL中的参考游标

在上一文中,我们介绍了使用PLSQL的显式游标,该类游标在声明之初已经和sql语句进行了绑定,属于静态的游标。而本文中我们介绍的参考游标,属于动态游标,在其声明时未绑定sql语句,而我们在使用时可以动态的绑定sql语句。         如下,假设存在下表emp:         现在我们利用参考游标来实现打印输出deptno为20的所有雇员的信息: declare type c...
阅读(749) 评论(0)

28.PLSQL中的显式游标

在上一文中,介绍了PLSQL中的隐式游标的用法,本文主要介绍另外一种游标的使用——显式游标。 一、显式游标声明和属性 1.1 显式游标的声明         所谓显式游标,就是我们在PLSQL的声明区,显式的去声明的游标,它在声明时已经绑定的SQL语句,将会管理该SQL语句返回的结果集,其声明格式如下: cursor 游标名称 is SQL语句        如果声明一个管理emp表查询...
阅读(619) 评论(0)

27.PLSQL中的隐式游标

一、什么是游标        简单来理解,在PLSQL中,无论我们查询数据库还是向数据库插入、修改和删除的DML操作,凡是对数据库产生了影响,执行的sql语句都会返回一个由受影响的数据行组成的结果集,而游标就是管理这个结果集的对象。         Oracle中游标分为两种——隐式游标和显式游标,每个sql语句返回的结果集都会默认受‘SQL’这个隐式游标的管理;而显式游标是我们自定义的游标,...
阅读(364) 评论(0)

26.PLSQL中使用forall和bulk collect批量操作数据库

假设有以下数据表emp: 一、使用forall批量修改数据库        如果有以下需求:要求修改EMPNO为7499、7566、和7654的成员的sal值为5000,如果我们在Plsql中使用for循环,如下: declare type empno_varray is varray(8) of emp.empno%type; v_empno empno_varray :=em...
阅读(535) 评论(0)

25.PLSQL中的数组

在上一文24.PLSQL中的索引表>>中,我们介绍了oracle中的索引表的使用,之前提到过索引表类似C语言中的数组,本文介绍一种PLSQL中真正的数组---Varray。Varray具有以下特点:         1、Varray是固定长度的数组,在创建时需要制定数组的长度和类型。         2、Varray可以放置重复的元素。         3、Varray是一种可以在PLSQL...
阅读(579) 评论(0)

修改postfix和dovecot的认证方式

一、引言         在上一文中介绍了在Ubuntu 16.04布置postfix、dovecot邮件服务器的方法,本文紧接着上一文,主要介绍修改postfix认证方式和dovecot的认证方式。 二、修改postfix认证方式为sasl-auth 2.1 安装sasl2-bin         想要修改postfix的认证方式为sasl-auth,需要先安装sasl2-bin,安装的...
阅读(1154) 评论(0)

Ubuntu 16.04 布置postfix、dovecot邮件服务器

一、引言         postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件,也就是我们常说的SMTP服务端。postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。它更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。而Dovecot 是一个开源的 IMAP 和 POP3 邮件服务...
阅读(2486) 评论(2)

【C++模板】C++声明模板时能否用struct关键字代替class或者typename

我们知道C++中声明一个函数或者类的模板支持两种关键字class和typename: template struct Person { public: T age; }; 或者 template struct Teacher { public: T age; };          而且我们知道在C++中struct和class关键字基本上是等价的,因为要兼容C语言,所...
阅读(869) 评论(0)

【C++关键字】关于extern关键字的几点疑问

一、需要extern声明引入的变量是在别的文件中的头文件还是cpp文件?       我们先看下extern关键字的作用是什么?当我们将一个变量在文件中用extern声明引入后,它告诉连接器:这个变量的定义需要到别的模块中去寻找。而模块的编译单元是以cpp文件为核心的,但是cpp文件可以以include的方式包含任意的头文件。所以我们只有保证某个编译后的模块中含有extern声明的变量即可,也就...
阅读(260) 评论(0)
22条 共2页1 2 下一页 尾页
    个人资料
    • 访问:408717次
    • 积分:6881
    • 等级:
    • 排名:第3755名
    • 原创:293篇
    • 转载:17篇
    • 译文:1篇
    • 评论:65条
    其它平台
    博客专栏