ORA-06502: PL/SQL: 数字或值错误: C# 代码中的字符串缓冲区太小异常

2024-07-04

我正在尝试使用来自 asp.net 上的 # code 的 in 和 out 参数执行一些 oracle pl/sql 过程。我想从 out 参数中检索值。但是当我执行时,我收到一个oracle异常,如“ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小”。我现在该怎么办?请帮我。

code:

using Oracle.DataAccess.Client;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Activity.Account
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            SuccessLabel.Visible = false;
            FailureLabel.Visible = false;
        }

        protected void Create_user(object sender, EventArgs e)
        {
            var id="";
            string oradb = "Data Source=OracleServerHost;User ID=scott;password=tiger";
            using (OracleConnection conn = new OracleConnection(oradb))
            {
                try
                {
                    OracleCommand cmd = new OracleCommand();
                    cmd.Connection = conn;
                    cmd.CommandText = "create_users_372640";
                    cmd.CommandType = CommandType.StoredProcedure;
                    OracleParameter p1 = new OracleParameter("u_user_id", UserIDTextBox.Text.TrimEnd());
                    OracleParameter p2 = new OracleParameter("u_First", FirstNameTextBox.Text.TrimEnd());
                    OracleParameter p3 = new OracleParameter("u_Last", LastNameTextBox.Text.TrimEnd());
                    OracleParameter p4 = new OracleParameter("u_Email", EmailIDTextBox.Text.TrimEnd());
                    OracleParameter p5 = new OracleParameter("u_password", PasswordTextBox.Text.TrimEnd());
                    cmd.Parameters.Add(p1);
                    cmd.Parameters.Add(p2);
                    cmd.Parameters.Add(p3);
                    cmd.Parameters.Add(p4);
                    cmd.Parameters.Add(p5);
                    OracleCommand cmd_chk = new OracleCommand();
                    cmd_chk.Connection = conn;
                    cmd_chk.CommandText = "check_user_372640";
                    cmd_chk.CommandType = CommandType.StoredProcedure;
                    OracleParameter p6 = new OracleParameter("user_id", UserIDTextBox.Text.TrimEnd());
                    cmd_chk.Parameters.Add(p6);
                    cmd_chk.Parameters.Add("id", OracleDbType.Varchar2).Direction = ParameterDirection.Output;
                    conn.Open();
                    cmd_chk.ExecuteNonQuery();
                    id=(string)cmd_chk.Parameters["id"].Value;
                    //OracleDataReader rd = cmd_chk.ExecuteReader();
                    if (id != null && id != "")
                    {
                        //rd.Read();
                        SuccessLabel.Visible = false;
                        FailureLabel.Visible = true;
                    }
                    else
                    {
                        cmd.ExecuteNonQuery();
                        SuccessLabel.Visible = true;
                        FailureLabel.Visible = false;    
                    }
                }catch(Exception){
                    Console.WriteLine("SQL Exception Occured");
                }
            }

        }
    }
}

我的oracle程序是:

create or replace procedure check_user_372640(
user_id in varchar2,
id out varchar2
)
as
u_id varchar2(20);
begin
select user_id into u_id from ACTIVITY_USERS_372640 where user_id=user_id;
id:=u_id;
end;

它现在对我有用。 错误是我已将参数“Id”声明为 varchar2。但我没有给出任何尺寸。 现在我已经声明了参数的最大大小并且它工作正常。

 cmd_chk.Parameters.Add("id", OracleDbType.Varchar2,32767).Direction = ParameterDirection.Output;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ORA-06502: PL/SQL: 数字或值错误: C# 代码中的字符串缓冲区太小异常 的相关文章

随机推荐

  • 您能解释一下这两个 JavaScript 示例吗?

    1 为什么结果是foo baz不是1 因为 true 是 1 var foo 1 var baz 2 foo baz returns 2 which is true 2 有两个优点console log foo bar 它们的含义是什么 v
  • 有没有办法将协议属性声明为私有?

    我想遵守一个协议 并隐藏要访问的符合的属性 将它们声明为private 考虑以下 protocol P var value String get init value String class C P var value String re
  • Perl 中嵌套数据结构的简单参考或备忘单是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Perl 中嵌套数据结构的简单参考或备忘单是什么 一个很好的入门教程是perldoc perlreftut http perldoc pe
  • 通过tcp向logstash发送数据

    我在从简单的 java 应用程序将日志数据发送到 logstash 实例时遇到一些问题 对于我的用例 我试图避免使用 log4j logback 而是通过原始 tcp 套接字在单独的行上批处理 json 事件 原因是我希望通过 aws la
  • ListCollectionView 是否泄漏内存?

    我一直在研究如何避免由于强引用而导致的内存泄漏INotifyCollectionChanged来自视图模型的事件 我正在玩弄使用ListCollectionView看看这是否能解决我的问题 我认为以下内容正在泄漏内存 我做错了什么吗 var
  • 管理 Android 应用商店(Google/Amazon/等)的代码/构建?

    我有一个 Android 应用程序 主要是从 Android Market 现在是 Google Play 下载的 我们对源代码进行了一些调整 并提交给亚马逊应用商店 看看它能获得什么样的吸引力 我现在正在寻找一种可持续的方法 从通用代码库
  • 使用 Facebook 的 Javascript SDK 运行 FQL 查询

    这是我的查询 select uid name is app user from user where uid in select uid2 from friend where uid1 me and is app user 1 我需要使用
  • 使用自定义函数计算结构体 Vec 中的部分重复项

    假设我有以下示例 struct Client email String phone String details String fn main let mut clients Vec
  • 如何在 JPanel 中显示图像

    我的问题是如何将图像显示到 JPanel 中 这里询问类似问题的其他主题我不清楚我该如何做到这一点 我的项目文件夹中有一个包含图像文件的目录Project Folder GUI img 具体来说gray png and green png我
  • TSQL 时间序列模式数据挖掘

    获取一个包含以下 3 个字段的 SQL 表 Id TimeStamp Item UserId 我想确定最常见的序列Item for a UserId在一次会议中 会话将简单地由时间阈值来定义 即 如果 X 分钟内没有完整的条目 则任何未来的
  • 异步任务被评估两次

    我使用以下方法同时异步执行一些任务 public async Task
  • 在 AWS SageMaker 上重新托管经过训练的模型

    我已经开始探索 AWS SageMaker 从这些开始AWS 提供的示例 https github com awslabs amazon sagemaker examples tree master introduction to amaz
  • YouTube 上传质量

    我正在使用 google 的 GData API 将视频从我的应用程序上传到 youtube 上传工作正常 但上传视频的质量仅为 360p 而原始视频的质量为 720p 这是否按预期工作 如果是这样 有什么方法可以解决此视频压缩问题 让我的
  • Skype REST API python 开始对话

    刚刚将我的机器人杰西添加到联系人中 现在尝试开始对话但没有任何作用 import requests import requests auth as auth import json url https login microsoftonli
  • 如何在多线程中使用spring事务

    我有一个方法如下 ClassA java Transactional public void methodA ExecutorService executorService Executors newFixedThreadPool 4 ex
  • Android ShapeDrawable 以编程方式设置背景和边框

    我有一个ShapeDrawable final ShapeDrawable drawable new ShapeDrawable shape drawable getPaint setStyle Paint Style FILL drawa
  • 如何找到循环矩阵何时收敛

    我得到了一个矩阵 P lt matrix c 0 0 0 0 5 0 0 5 0 1 0 1 0 0 4 0 0 4 0 0 2 0 2 0 3 0 0 3 0 0 0 3 0 5 0 0 2 0 0 0 0 4 0 6 0 0 0 0 0
  • 适合初学者的基于 Java 的 Web 应用程序框架

    我有一位新同事需要一些有关用 Java 开发 Web 应用程序的教育 他有基本的 Java 知识 但几乎没有 Web 应用程序经验 我们的标准工具堆栈基于 Wicket JPA 和 Spring 但我担心这会让我们的新同事过度收费 现在我正
  • Android 上的 DGPS 校正

    我正在开发一个项目 旨在利用 Android 手机和附近站点的 GPS 功能 使用 RTK DGPS 技术来计算更精确的定位 厘米 到目前为止 我还没有看到有人说他们实际上成功地执行了类似的任务 除了 GPSmaster 谁不解释一下如何
  • ORA-06502: PL/SQL: 数字或值错误: C# 代码中的字符串缓冲区太小异常

    我正在尝试使用来自 asp net 上的 code 的 in 和 out 参数执行一些 oracle pl sql 过程 我想从 out 参数中检索值 但是当我执行时 我收到一个oracle异常 如 ORA 06502 PL SQL 数字或