在PL / SQL中访问绑定变量

时间:2012-04-26 16:22:51

标签: plsql buffer bind-variables ora-06502

我正在尝试在Oracle Express版编辑器中运行程序。当我执行程序时,出现错误

ORA-06502: PL/SQL: numeric or value error: character string buffer too small

任何人都可以帮助我理解为什么我收到错误以及如何修复代码?

VARIABLE gvn_total_salary NUMBER;
DECLARE
   vn_base_salary NUMBER := 3000;
   vn_bonus NUMBER := 1000;
BEGIN
   :gvn_total_salary := vn_base_salary + vn_bonus;
END;

我得到的输出

ORA-06502: PL/SQL: numeric or value error: character string buffer too small 


Run By SYSTEM 
Parsing Schema SYSTEM 
Script Started Thursday, April 26, 2012 
 3 seconds ago 
Elapsed time 0.01 seconds 
Statements Processed 1 
Successful 0 
With Errors 1 

2 个答案:

答案 0 :(得分:1)

使用bind变量的声明,该代码在SQL * Plus中可以正常使用

SQL> VARIABLE gvn_total_salary NUMBER;
SQL> DECLARE
  2     vn_base_salary NUMBER := 3000;
  3     vn_bonus NUMBER := 1000;
  4  BEGIN
  5     :gvn_total_salary := vn_base_salary + vn_bonus;
  6  END;
  7  /

PL/SQL procedure successfully completed.

SQL> print gvn_total_salary

GVN_TOTAL_SALARY
----------------
            4000

您可以使用SQL * Plus连接到数据库并运行相同的东西吗?

答案 1 :(得分:0)

你到底想要完成什么?此脚本不会在sqlplus或Oracle Developer中执行,也不会在我能想到的任何PL / SQL执行环境中执行。实际上,我不明白你如何传递绑定变量:gvn_total_salary以及如何获得你所描述的错误。你应该得到类似“bind variable gvn_total_salary”之类的东西。