文档章节

oracle 自定义函数, 新手错误 解决

之渊
 之渊
发布于 2017/03/30 14:23
字数 428
阅读 18
收藏 0

写 oracle的 自定义函数的时候,老是 报错我也是醉了 不过也算找到原因了。、 首先 ,写好 自定义函数的 时候, 执行的时候 选择的 命令 是 执行SQL 声明, 而不是 SQL 脚本,、 否则报错。 在 执行成功后, 使用的时候, 如果 调用失败, 应该, 更新 一下 oracle 连接,否则有可能 oracle 没有 自动刷新。 如果 然后 就 到了 如果 声明变量的时候, 如果是varchar 必须 指定大小,否则报错。 注意: char , varchar , varchar2 是不一样的 当然 如果你们可以看懂 爆错问题, 算你超神

CREATE OR REPLACE 
		FUNCTION testFunc8 (num1 IN NUMBER, num2 IN NUMBER,num6 VARCHAR2)
		RETURN VARCHAR2
		AS
			num3 number;
			num4 number;
			num5 VARCHAR2(50); -- 参数,字符串,必须说明  大小 
		BEGIN
			num3 := num1 + num2;
			num4 := num1 * num2;
			num5 := 'ggg';
			RETURN num6;
		END;

SELECT testFunc8(1,2,'欧敏'),NAME_ FROM  CRM_OU_USER WHERE NAME_='欧敏'

如果是 赋值的话

CREATE OR REPLACE 
		FUNCTION testFuncTable (tname VARCHAR2)
		RETURN VARCHAR2
		AS
			
			tableName VARCHAR2(100); -- 参数,字符串,必须说明  大小 
		BEGIN
			tableName := tname; -- 赋值 字符串
			--DELETE FROM tableName; 不可以 删除 
			RETURN '删除成功';
		END;

对数据库有写操作(INSERT、UPDATE、DELETE、CREATE、ALTER、COMMIT)的函数,是无法简单的用SQL来调用的. 可以使用 存储过程其他,触发器 使用"自主事物",可以解决这个问题.

其实"自主事物"的功能,主要是解决回滚时,标记了PRAGMA AUTONOMOUS_TRANSACTION;的代码块不受外面调用的事物作用.

在解决触发器更新不成功时,如果按默认,记录日志的也将回滚,用该方法强制记录日志,效果较好.

参考 地址: https://my.oschina.net/elim1/blog/811339

© 著作权归作者所有

之渊
粉丝 13
博文 664
码字总数 205350
作品 0
佛山
程序员
私信 提问
调试经验——ORA-06502: PL/SQL: numeric or value error: character string buffer too small的解决方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hpdlzu80100/article/details/83178410 问题描述: 生产环境中,有一个在报表自动刷新系统中排期的报表(sch...

预见未来to50
2018/10/19
0
0
给大家分享一个oracle问题解决实例

今天给大家分享一个oracle问题的解决实例 如启动Oracle时提示“ORA-00600: internal error code, arguments”错误? SQL> startup ORA-00600: internal error code, arguments: [ksunfy : to......

Foundation
2015/12/29
90
0
Linux编程常见错误及解决方案

对于linux新手来说Linux编程会经常遇见一些问题,今天列出新手们最经常遇到的编程错误,并提供解决方案: 1)由于是Linux新手,所以现在才开始接触线程编程,照着GUN/Linux编程指南中的一个例...

最新更新消息
2015/12/03
18
0
Linux编程常见错误及解决方案

对于linux新手来说Linux编程会经常遇见一些问题,今天列出新手们最经常遇到的编程错误,并提供解决方案: 1)由于是Linux新手,所以现在才开始接触线程编程,照着GUN/Linux编程指南中的一个例...

最新更新消息
2015/11/03
112
0
Oracle列转行函数版本不兼容解决方案

业务场景 本博客记录一下Oracle列转行函数在Oracle11的一些不兼容问题,vm_concat在一些业务场景是必须的。不过这个函数使用要谨慎,底层实现应该也是group by等等实现的,性能并不是特别好。...

smileNicky
2018/12/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

XXL-JOB使用命令行的方式启动python时,日志过多导致阻塞的解决方式

一、Runtime.getRuntime().exec()的阻塞问题 这个问题也不能算是XXL-JOB的问题,而是Java的Runtime.getRuntime().exec()造成的,BufferedReader的缓冲区大小有限,当不能及时从缓冲区中把输出...

codeobj
3分钟前
1
0
java后端获取字符串标签里面的具体值

1、如下:怎么获取value值,使用Jsoup解决 <select id='department' name='department' class='select' tabindex='6' onchange='changeDept()'><option value=''>院系</optio......

木九天
10分钟前
2
0
Xamarin图表开发基础教程(10)OxyPlot框架支持的图表类型

Xamarin图表开发基础教程(10)OxyPlot框架支持的图表类型 OxyPlot组件支持26种图表,这些图表按照功能和样式可以分为4大类,分别为线型图表、条型图表、金融图表和其它图表。 线型图表 OxyP...

大学霸
13分钟前
2
0
移动端input“输入框”常见问题及解决方法

移动端input“输入框”常见问题及解决方法 1. ios中,输入框获得焦点时,页面输入框被遮盖,定位的元素位置错乱: 当页input存在于吸顶或者吸底元素中时,用户点击输入框,输入法弹出后,fie...

tyou
15分钟前
2
0
初探Android线程池

前言 最近在看OkHttp的源码,看的时候发现有关线程池的运用,自己就仔细想了一下,这个块知识好像不是很牢固。没办法,再研究一下有关线程池的相关知识吧。学习就是一个查漏补缺的过程,最终...

二营长的意大利炮手
22分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部