Oh *_*oon 5 oracle ddl plsql ora-06502
我们遇到了Oracle表定义(DDL)和我们的一个PL/SQL脚本中的特定问题.
问题是,有一个在表中进行更改,更改varchar(20)到varchar(30),这种变化却并不因此努力体现在我们的PL/SQL脚本消费数据,这仍然是一个varchar(20),引起了ORA-06502: PL/SQL: numeric or value error我们的回归测试过程中一个错误.
我想在这里向Oracle和数据库专家寻求建议,无论您是否在过去遇到过这样的情况,表DDL都有变化,并且没有反映在PL/SQL中以及如何处理这个差距.
我知道一种简单的方法是某种形式的执行或文书工作,但会不会有更美观或更优雅的解决方案,即外键的工作方式以避免插入/更新/删除异常?
谢谢!
对于初学者,您应该始终根据表中的列定义将变量声明为TYPE:
即,而不是:
dept_name VARCHAR2(50);
Run Code Online (Sandbox Code Playgroud)
使用:
dept_name dept.dept_name%TYPE;
Run Code Online (Sandbox Code Playgroud)
这样,当您的基表更改时,您的声明仍然有效.
您也可以将过程参数声明为类型:
PROCEDURE proc(p1 IN dept.dept_name%TYPE)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |