关于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_