当一位用户在使用我们的网站时看到以下错误输出时,我收到了一封电子邮件。
java.sql.SQLException:ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小ORA-06512:位于“WEB_OWNER.SSFP_GET_WE_OBJ”,第 300 行ORA-06512:位于第 1 行
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:137)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:315)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:281)
这是来自 oracle webconnect、Oracle Application Server Containers for J2EE 10g(10.1.2.3.0)的错误。
任何想法?
答案1
问题出在错误中,这在所有编程语言中都很常见。您的变量对于您放入的值来说太小了。这是一个常见的 pl/sql 异常。防止这种情况发生的简单方法是将您的 pl/sql 变量锚定到列。不要这样做
变量名称 变量类型(可变长度)
如果您更改某一列,为了使其更长,您需要更改代码以使变量更宽。请执行以下操作:
变量名称 列.表%TYPE
因此,如果您想根据员工表和客户姓名字段创建一个变量,请执行以下操作
vCustomerName 员工.customerName%类型;
这在 pl/sql 中已经存在了 15-20 年。
ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小