我有一个select语句,需要在我的pl/sql中选择几十列到自定义变量中.如下所示:
select col1,
col2,
....
col30
into var1,
...
var30
from table
where ....
Run Code Online (Sandbox Code Playgroud)
在执行SP时遇到错误:
ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小
错误信息仅指出select语句的第一行号.即使我可以弄清楚我定义的变量太小而无法容纳列,但仍然难以精确定位错误定义的变量.这不是我调试此sp的有效方法.
有什么好主意,请告诉我.
pl/sql中通常使用两个选项:
1.使用%type定义PL/SQL中的变量以匹配表的定义.
define
v_col1 my_table.col1%type;
v_col2 my_table.col2%type;
begin
select col1,col2
into v_col1, v_col2
from my_table
-- some condition that pulls 1 row
where rownum = 1;
end;
Run Code Online (Sandbox Code Playgroud)
2.使用%rowtype定义行变量
define
v_my_table_row my_table%rowtype;
begin
select *
into v_my_table_row
from my_table
where rownum = 1;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
319 次 |
| 最近记录: |