oracle – 如何最小化物理DDL更改和PL / SQL更改之间的耦合/依赖
发布时间:2020-12-12 12:57:05 所属栏目:百科 来源:网络整理
导读:我们遇到了Oracle表定义(DDL)和我们的一个PL / SQL脚本中的特定问题. 问题是,表中有一个更改,从varchar(20)更改为varchar(30),然而,这个更改并没有在我们的一个消耗数据的PL / SQL脚本中得到充分反映,这仍然是varchar(20),在我们的一个回归测试中导致ORA-065
我们遇到了Oracle表定义(DDL)和我们的一个PL / SQL脚本中的特定问题.
问题是,表中有一个更改,从varchar(20)更改为varchar(30),然而,这个更改并没有在我们的一个消耗数据的PL / SQL脚本中得到充分反映,这仍然是varchar(20),在我们的一个回归测试中导致ORA-06502:PL / SQL:数字或值错误错误. 我想在这里向Oracle和数据库专家寻求建议,无论您是否在过去遇到过这样的情况,表DDL都有变化,并且没有反映在PL / SQL中以及如何处理这个差距. 我知道一种简单的方法是某种形式的强制执行或文书工作,但是会不会出现更美观或更优雅的解决方案,即外键如何避免插入/更新/删除异常? 谢谢! 解决方法对于初学者,您应该始终根据表中的列定义将变量声明为TYPE:即,而不是: dept_name VARCHAR2(50); 使用: dept_name dept.dept_name%TYPE; 这样,当您的基表更改时,您的声明仍然有效. 您也可以将过程参数声明为类型: PROCEDURE proc(p1 IN dept.dept_name%TYPE) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |