今天使用到动态的sql:
用的方法是:
用if else 拼出sql文,然后用
“open cursor for sql”来执行。
-- 大概代码如下
create or replace....
is
var_sql varchar2(4000);
TYPE typCur IS REF CURSOR;
cur typCur;
rec aType.aRecord%type; -- aRecord是一个record
begin
var_sql := '';
if...then
var_sql :=var_sql|| 'select a, b, c'..||..||..;
elsif... then
var_sql :=var_sql||..||..||..;
end if;
if...then
var_sql := var_sql||'..';
end if;
open cur for var_sql
loop fetch cur into rec
exit when cur%notfound;
...
end loop;
close cur;
exception
when others then
close cur;
end;
/*
* 1. 由于拼的东西sql文太长,当我将拼好的var_sql塞给var_sql时,会报06502的错,如果定义时将var_sql定义为varchar2(32000)
* 【oracle db里面varchar2最长为4000bytes,而plsql在处理时,能处理的最长的是32000bytes】
*2. 1的问题完了之后,程序能执行到“fetch cur into rec”,rec在定义的时候定义的type与select检索到的不一致,比如是b,a,c
*/
ORA-06502 PL/SQL: numeric or value error string
Cause: An arithmetic, numeric, string, conversion, or constraint error occurred. For example, this error occurs if an attempt is made to assign the value NULL to a variable declared NOT NULL, or if an attempt is made to assign an integer larger than 99 to a variable declared NUMBER(2).
Action: Change the data, how it is manipulated, or how it is declared so that values do not violate constraints.
分享到:
相关推荐
ORA-06502 是一个常见的Oracle错误代码,表示“字符缓冲区太小”,而 ORA-06512 实际上是ORA-06502 的一个扩展错误码,通常与之一起出现。这个错误发生在尝试将一个比预期更大的值插入到一个固定大小的缓冲区时,...
VALUE_ERROR (ORA-06502) **异常描述:** 在PL/SQL中当赋给变量的值不符合预期或超出范围时触发此异常。 **解决方法:** - 检查赋值操作是否正确。 - 使用适当的错误处理逻辑来捕获并处理此类异常。 #### 14. ...
13. `Value_error` (ora-06502):赋值操作时,变量长度不足以容纳数据。 14. `Login_denied` (ora-01017):提供错误的用户名或密码登录数据库。 15. `Not_logged_on` (ora-01012):在未连接到 Oracle 数据库时执行 ...
单片机嵌入式系统概述,PPT文件,简要介绍了单片机的相关知识
当尝试对数据进行非法操作或操作超出了数据的有效范围时,系统会抛出`VALUE_ERROR`(ORA-06502)异常。 **解决方法:** 1. **范围检查**:在执行操作前进行必要的范围检查。 2. **使用CASE WHEN语句**:通过CASE ...
4. **ORA-06502**:PL/SQL:数值或字符串缓冲区太小。当分配的内存不足以存储返回的数据时,会出现此错误。 5. **ORA-06512**:PL/SQL:在行号X上出现呼叫堆栈中的错误。这个错误通常伴随着具体的行号,用于指明...
模型检查是一种自动化的验证技术,它源于20世纪80年代初,由Clarke和Emerson等人提出。这种技术主要用于检查有限状态系统是否满足特定的逻辑性质,即判断系统的行为是否符合预先设定的规范。模型检查的核心在于将...
20. **VALUE_ERROR** (ORA-06502): 当变量长度不足以存储返回的数据,或尝试将无效的字符串转换为数据类型时,会发生此异常。确保变量有足够的容量或转换操作正确无误。 以上就是Oracle数据库中一些常见的异常及...
19. **VALUE_ERROR (ORA-06502)** - 描述:发生算术、转换、截断或大小限制错误。 - 举例:包括但不限于数值运算溢出、数据类型不匹配等。 20. **ZERO_DIVIDE (ORA-01476)** - 描述:尝试除以零。 - 举例:数学...
《Oracle查错手册》还涵盖了诸如"ORA-01555"(快照过旧)、"ORA-06502"(PL/SQL:numeric or value error)、"ORA-27037"(无法打开文件)等大量错误,每个错误都有详细的解释和可能的解决步骤。这些错误可能是由于...
* VALUE_ERROR(ORA-06502):在转换字符类型、截取或长度受限时,会发生该异常 * STORAGE_ERROR(ORA-06500):内存溢出 * ZERO_DIVIDE(ORA-01476):除数为零 * CASE_NOT_FOUND(ORA-06592):对于选择 case 语句...
文件中提到的数据泵导入错误(ORA-39125)和PL/SQL数值或值错误(ORA-06502),表明在使用数据泵(Data Pump)从远程数据库导入数据到本地Oracle数据库时可能遇到的问题。这些问题通常发生在导入大量数据或复杂数据...
- **错误代码**:ORA-06502 - **场景示例**:在进行数据赋值时,若目标变量的大小不足以存储实际数据量,将导致此异常。 #### 21. ZERO_DIVIDE - **异常描述**:数字值除以零时触发。 - **错误代码**:ORA-01476 - ...
13. **VALUE_ERROR (ORA-06502)** - **描述**:在执行赋值操作时,如果目标变量的长度不足以容纳实际数据时触发。 - **示例场景**:例如,在尝试将一个较长的字符串赋值给较短的字符变量时,就会引发此异常。 14....
在遇到“ora-06502: PL/SQL: numeric or value error: character string buffer too small”错误时,这通常是由于某个SQL语句过长导致的。解决方法是截断WRH$_SQLTEXT表中的SQL文本。需要注意的是,直接操作此表可能...
- Bug # 4918539: ORA-ORA-06502 or ORA-01460 may occurs if a procedure is executed through the Run PL/SQL dialog box and a string with multibyte characters is assigned to one of the parameters. ...
在上述例子中,程序尝试存储一个超过这个限制的字符串,导致了“字符缓冲区太小”的错误(ORA-06502)。 当试图存储更长的字符串时,我们通常会转向LONG类型,但即使LONG类型理论上可以存储最多2GB的数据,实践中也...