gpt4 book ai didi

oracle - 如何最小化物理 DDL 更改和 PL/SQL 更改之间的耦合/依赖性?

转载 作者:行者123 更新时间:2023-12-04 18:50:47 29 4
gpt4 key购买 nike

我们在 Oracle 表定义 (DDL) 和我们的一个 PL/SQL 脚本中遇到了一个特殊问题。

问题是,表中发生了变化,从 varchar(20) 改变了。至 varchar(30) ,然而,这一变化并没有在我们的一个使用数据的 PL/SQL 脚本中认真反射(reflect),它仍然是 varchar(20) ,导致 ORA-06502: PL/SQL: numeric or value error在我们的回归测试之一中出错。

想请教一下Oracle和数据库高手,以前有没有遇到过这样的场景,表DDL发生了变化,在PL/SQL中没有体现出来,你们是怎么处理的。

我知道一种简单的方法是某种形式的强制执行或文书工作,但是会出现更漂亮或更优雅的解决方案,即外键避免插入/更新/删除异常的工作方式吗?

感谢!

最佳答案

首先,您应该始终根据表中的列定义将变量声明为 TYPE:

即,而不是:

dept_name  VARCHAR2(50);

用:
dept_name  dept.dept_name%TYPE;

这样,当您的基表更改时,您的声明仍然有效。

您还可以将过程参数声明为类型:
PROCEDURE proc(p1 IN dept.dept_name%TYPE)

关于oracle - 如何最小化物理 DDL 更改和 PL/SQL 更改之间的耦合/依赖性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6529663/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com