2012-04-26 67 views
0

我想在Oracle Express Edition编辑器中运行一个程序。当我执行程序时,我得到一个错误访问PL/SQL中的绑定变量

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 
+0

gvn_total_salary在哪里以及如何定义? – 2012-04-26 16:28:50

+0

哦对不起。它已经错过了。它被定义为绑定变量--- DECLARE vn_base_salary NUMBER:= 3000; vn_bonus NUMBER:= 1000; BEGIN :gvn_total_salary:= vn_base_salary + vn_bonus; END; – 2012-04-26 16:43:08

+0

虽然我试图执行它,我得到执行之前本身作为--- 脚本名称示例绑定 创建于2012年04月26日10:20:22由SYSTEM 更新于2012年4月26日10 :20:59 PM由SYSTEM 语句数1个 脚本的字节大小165 行号未知声明 1个变量gvn_total_salary NUMBER – 2012-04-26 16:52:54

回答

0

什么是你真正想实现什么?这个脚本不会在sqlplus或Oracle Developer或我能想到的任何PL/SQL执行环境中执行。事实上,我不明白你是如何传递绑定变量的:gvn_total_salary以及你如何得到你描述的错误。你应该得到像“绑定变量gvn_total_salary”没有声明的东西。

1

随着绑定变量的声明,该代码工作正常,我在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连接到数据库并运行同样的事情?

+0

是的,我可以在SQL * Plus命令行。但是我无法在Oracle Express Edition编辑器中完成它(在登录后在数据库主页中打开的浏览器中) – 2012-04-26 16:59:40