【问题标题】:Accessing Bind Variable in PL/SQL在 PL/SQL 中访问绑定变量
【发布时间】:2012-05-07 10:08:36
【问题描述】:

我正在尝试在 Oracle Express Edition 编辑器中运行一个程序。当我执行程序时,我得到一个错误

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 

【问题讨论】:

  • gvn_total_salary 在哪里以及如何定义?
  • 哦,对不起..它错过了。它被定义为绑定变量 --- DECLARE vn_base_salary NUMBER := 3000; vn_bonus NUMBER := 1000;开始:gvn_total_salary:= vn_base_salary + vn_bonus;结束;
  • 当我尝试执行它时,我在执行本身之前得到了——脚本名称示例绑定创建于 2012 年 4 月 26 日晚上 10:20:22 由系统更新于 04/26 /2012 10:20:59 PM by SYSTEM 语句数 1 脚本大小(以字节为单位) 165 行号未知语句 1 VARIABLE gvn_total_salary NUMBER

标签: plsql buffer bind-variables ora-06502


【解决方案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 连接到数据库并运行相同的东西吗?

【讨论】:

  • 是的,我可以在 sql* plus 命令行中使用。但我无法在 Oracle express edition 编辑器中完成它(在登录后在数据库主页中打开的浏览器中)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多