【问题标题】:Passing parameters with a stored procedure to oracle from asp.net使用存储过程将参数从 asp.net 传递给 oracle
【发布时间】:2013-10-24 07:16:57
【问题描述】:

我有一个字符串:“有时候,”维尼说,“最小的东西占据了你心中最多的空间。”。当我使用 Oracle SQL Developer 将此字符串插入 Oracle 数据库时,它可以正常工作,但是当我使用 ASP.net 应用程序时,我会得到:¿有时,'Pooh 说,'最小的东西占用了最多的空间你的心。¿

你能帮帮我吗?

数据库中的字段类型 - NVARCHAR2

提交的名称 - I_Comment

包中的存储过程:

PROCEDURE INSERTNEWSFLASH
(
i_StartTime DATE,
i_EndTime DATE,
i_Comment NVARCHAR2,
i_Priority NUMBER,
i_Type NUMBER,
i_AirlineCode VARCHAR2,
o_NewsFlashId out NEWSFLASH.NEWSFLASHID%type
);

包体中的存储过程:

PROCEDURE INSERTNEWSFLASH
(
i_StartTime DATE,
i_EndTime DATE,
i_Comment NVARCHAR2,
i_Priority NUMBER,
i_Type NUMBER,
i_AirlineCode VARCHAR2,
o_NewsFlashId out NEWSFLASH.NEWSFLASHID%type
) AS
BEGIN
  SELECT NEWSFLASHID_SEQ.nextval into o_NewsFlashId from dual;
  INSERT INTO NEWSFLASH
  (
    NEWSFLASHID,
    VALIDFROMDATE,
    VALIDTODATE,
    NEWSFLASHTEXT,
    NEWSFLASHPRIORITY,
    NEWSFLASHTYPE,
    AIRLINECODE
  )
  values
  (
    o_NewsFlashId,
    i_StartTime,
    i_EndTime,
    i_Comment,
    i_Priority,
    i_Type,
    i_AirlineCode
  );
END INSERTNEWSFLASH;

C#代码:

public int Add(NewsFlashModel newsFlash)
    {
        using (IDataHelper dataHelper = dataHelperFactory.GetDataHelper(StaffTravelSettings.ConnectionStrings.ITravelDatabase))
        {
            dataHelper.AddParameter("i_StartTime", ParameterDirection.Input, DbType.Date, newsFlash.ValidFromDate);
            dataHelper.AddParameter("i_EndTime", ParameterDirection.Input, DbType.Date, newsFlash.ValidToDate);
            dataHelper.AddParameter("i_Comment", ParameterDirection.Input, DbType.String, newsFlash.NewsText);
            dataHelper.AddParameter("i_Priority", ParameterDirection.Input, DbType.Int32, newsFlash.Priority);
            dataHelper.AddParameter("i_Type", ParameterDirection.Input, DbType.Int32, (int) newsFlash.Type);
            dataHelper.AddParameter("i_AirlineCode", ParameterDirection.Input, DbType.String, newsFlash.AirlineCompanyCode);
            IDataParameter parameter = dataHelper.AddParameter("o_NewsFlashId", ParameterDirection.Output, DbType.Int32);
            dataHelper.ExecuteNonQuery("NEWSFLASH.INSERTNEWSFLASH");
            return Convert.ToInt32(parameter.Value);
        }
    }

【问题讨论】:

  • 什么是数据库字符集和排序规则?
  • ENGLISH_UNITED KINGDOM.WE8ISO8859P1 我无法更改此数据库的字符集。这是要求。
  • 有一个OracleDbType.NVarchar2 猜你应该用它

标签: c# asp.net oracle stored-procedures


【解决方案1】:

使用OracleType.NVarChar2 代替DbType.String

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 2016-04-05
    • 2016-02-02
    • 2019-06-03
    相关资源
    最近更新 更多