如何及时在pl/sql中找到准确的位置(ORA-06502:PL/SQL)

Bob*_*ang 1 oracle plsql

我有一个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的有效方法.

有什么好主意,请告诉我.

tbo*_*one 5

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)