Oracle function里面是可以允许有DML语句的,但是不能在查询的时候使用。
我们常用的function如:
select max(a) from table ;
这种调用方式是不能执行带有DML的FUNCTION的。
但是如果不用在SQL里面是可以有的
比如 dbms_output.put_line(func(...));
如果函数里面采用自治事务,是可以有DML 的。
简单转载一下什么是“自治事务”:
自治事务是可以在其他事务中调用的独立事务。
自治事务可以使事务离开调用事务的上下文执行SQL操作、提交或回滚其他操作并返回到调用事务的上下文然后继续调用事务。
自治事务调用后,事务完全与调用它的主事务独立。
不会看到任何主事务尚未提交的改变、不会共享主事务的锁或资源。自治事务的改变在自治事务提交后可以被其他事务可见。
自治事务可以调用其他自治事务,嵌套的层数没有限制。
相关推荐
Oracle培訓Oracle Procedure﹑Function、Trigger等
Oracle数据库中的Procedure(存储过程)和Function(函数)是两种重要的PL/SQL编程元素,它们在数据处理和逻辑实现上有着显著的区别。 1. **标识符与返回值**: - 函数(FUNCTION)的标识符是FUNCTION,其设计目的...
Oracle数据库是世界上最流行的关系型数据库管理系统之一,它提供了丰富的编程元素来实现复杂的业务逻辑,如过程(PROCEDURE)和函数(FUNCTION)。在本教程中,我们将深入探讨如何在Oracle中创建、调用以及删除这两...
Oracle数据库中的“包”(Package)和“过程”(Procedure)是高级数据库编程的重要概念,它们在企业级应用开发中广泛使用。理解并熟练掌握这些概念对于任何Oracle数据库开发者来说都至关重要。 首先,我们来解释...
过程与函数类似,也是封装的代码块,但区别在于过程不返回值,而是用于执行一系列操作。它们可以有输入参数,但没有返回值。过程通常用于执行那些不需要返回结果的数据库操作,如数据清理或数据验证。过程的声明和...
3. **Procedure**:与函数类似,Oracle过程也是PL/SQL代码块,但它们不返回值,主要用于执行一系列操作。过程可以有输入和输出参数,可以用于封装复杂的业务逻辑。在大型项目中,过程常用于处理事务、数据验证和流程...
oracle procedure trigger function cursor
本文将深入探讨Oracle的游标、与SQL Server的区别、Function与Procedure的区别、导入导出方式、数据库文件类型以及优化策略。 1. **Oracle游标**: - 游标允许我们处理查询结果集中的一行数据,分为显示游标和隐式...
- Oracle函数定义如 `CREATE OR REPLACE FUNCTION 函数名 (参数列表) RETURN 返回值类型 IS...END;`,函数可以有IN/OUT参数,支持数据增删改操作和动态SQL。 - SQL Server函数不支持OUT参数,不支持在函数内部进行...
使用MyBatis框架配置Oracle和MySql中存储过程与函数的调用。 分别描述了两种方式的实现:基于XML方式和注解方式。 其中Oracle所使用版本为Oracle11g_XE版,MySQL为5.7版本
3. Function与Procedure的区别: - Function必须有返回值,常用于需要返回单一计算结果的场合;Procedure无返回值,通常用于执行一系列操作。 - SQL语句中只能调用Function,因为Procedure不能直接在查询中使用。 ...
### Oracle存储过程、函数与DBLink详解 #### 一、Oracle存储过程简介 在Oracle数据库中,存储过程是一种预编译好的SQL代码集合,它可以接受输入参数、返回单个值或多个值,并能够执行复杂的数据库操作。存储过程...
PL/SQL Developer是一款由Allround Automations公司设计的专门针对Oracle数据库进行开发的集成环境,它为数据库管理员和开发人员提供了高效、便捷的工具。这款软件支持编写、调试、执行和管理PL/SQL代码,是Oracle...
1. 参数类型匹配:确保Java中的参数类型与Oracle存储过程或函数中的参数类型一致,否则可能导致转换异常。 2. 注意游标处理:有些存储过程可能返回游标,需要特别处理。 3. 事务管理:根据业务需求,可能需要手动...
4. 解释 FUNCTION, PROCEDURE 和 PACKAGE 的区别 答案:function 和 procedure 是 PL/SQL 代码的集合,通常为了完成一个任务。procedure 不需要返回任何值而 function 将返回一个值,在另一方面,Package 是为了完成...
Oracle对象包括触发器(Trigger)、存储过程(Stored Procedure)以及其他多种数据库组件,它们对于实现业务逻辑、数据验证以及性能优化等方面起着至关重要的作用。这篇文档将深入探讨如何在Oracle环境中创建和管理...
### Oracle到SQL Server存储过程语法转换详解 在数据库迁移项目中,从Oracle迁移到SQL Server是一种常见的场景。本文旨在提供一份详细的指南,帮助开发者更好地理解这两种数据库系统在存储过程方面的语法差异,并...
- **命名存储**:与普通的PL/SQL块不同,存储过程和函数具有名称,并且这些名称在数据库中是唯一的。 - **安全性**:存储过程和函数的安全性由数据库管理,只有被授权的用户才能访问它们。 - **复用性**:存储过程和...
2. FUNCTION、PROCEDURE 和 PACKAGE 的区别是什么? 答:FUNCTION 和 PROCEDURE 是 PL/SQL 代码的集合,通常用于完成一个任务。PROCEDURE 不需要返回任何值,而 FUNCTION 将返回一个值。在另一方面,PACKAGE 是为了...
这个异常通常与PL/SQL编程有关,因为SQL查询在PL/SQL块(如游标、存储过程或函数)中运行。在处理`NO_DATA_FOUND`异常时,有几种常见的策略可以采用。下面我们将详细探讨这三种处理办法。 **方法一:使用EXCEPTION...