oracle字符集乱码及返回 REF CURSOR 的存储过程执行问题

本文探讨了Oracle字符集可能导致的乱码问题,详细分析了OracleClient和OleDb在不同情况下的表现,并提供了相应解决方案。同时,文章介绍了执行返回REF CURSOR的存储过程时需要注意的事项,包括OracleClient和OleDb的不同处理方式。
摘要由CSDN通过智能技术生成


关于oracle字符集乱码问题:

1.OracleClient方式 存在乱码问题。(比如:当Oracle数据库服务器端采用英文字符集比如 US7ASCII 时,客户端不管字符集如何设置,读出的中文都是乱码;若服务器端用中文字符集比如 ZHS16GBK ,则无乱码问题。)

2. OleDb方式 微软 为“provider=MSDAORA.1;” 存在乱码问题。 (比如:服务器oracle为utf8,客户端为日文系统时,中文显示乱码)

3.OleDb方式 Oracle为“provider='OraOleDb.Oracle';”。 不管Oracle服务器端用何字符集,读写中文均无乱码问题。


关于要执行返回 REF CURSOR 的存储过程问题:

1 OracleClient:

必须在 OracleParameterCollection 中定义参数,包括 Cursor 的 OracleType 以及 Output 的 Direction。数据提供程序只支持作为输出参数绑定 REF CURSOR。提供程序不支持 REF CURSOR 作为输入参数。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data;
using System.Data.OracleClient;
namespace pro
{
    public partial class WebForm4 : System.Web.UI.Page
    {
        string OracleConnectionString = ConfigurationManager.ConnectionStrings["scott"].ConnectionString;
        protected void Page_Load(object sender, EventArgs e)
        {
            OracleConnection conn = new OracleConnection(OracleConnectionString);
            OracleCommand comm = new OracleCommand();
            comm.Connection = conn;
            comm.CommandType = CommandType.StoredProcedure;
            comm.CommandText = "curspkg.open_one_cursor";
            comm.Parameters.Add(new OracleParameter("n_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值