求助,Oracle数据库中数据参数传递问题
背景:数据库采用ORACLE
在数据访问层
Oracle.DataAccess.Client.OracleParameter pram1 = new Oracle.DataAccess.Client.OracleParameter("p_cursor",Oracle.DataAccess.Client.OracleDbType.RefCursor);
pram1.Direction = ParameterDirection.Output;
cmd.Parameters.Add(pram1);
这里的时候取出的参数是输出是没有问题的
问题是:如何输入时能够把一个集合当输入参数传递给ORACLE的存储过程?以下代码出错提示是参数传递错误。
有经验的朋友们们给点建议,如何我能把一个DataTable集合做为一个传递参数给这个存储过程
代码简单的略写为以下:
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
OracleTransaction txn = conn.BeginTransaction(IsolationLevel.ReadCommitted);
cmd.Transaction = txn;
cmd.CommandText = @"p_insert_dataset_l1";
cmd.CommandType = CommandType.StoredProcedure;
OracleParameter pTable = new OracleParameter("ds_insert", OracleDbType.RefCursor);
pTable.Value = dt; //----这里,组合了一个有行和列的DataTable,并且有内容,传递进入
cmd.Parameters.Add(pTable);
cmd.ExecuteNonQuery();
txn.Commit();
txn.Dispose();
cmd.Dispose();
[解决办法]
你可以把DataTable集合序列化为XML,以XML字符串的方式传递给存储过程
然后再数据库中可以解析XML
[解决办法]
同意。传xml字符串
oracle 解析xml字符串
参考http://blog.sina.com.cn/s/blog_a539013401015tdb.html
[解决办法]
无论怎样,都有一个原则,即是你传递过去的内容能被数据库解析才行
能够解析的类型,建表的时候也能看到,你可以传字符串,可以xml,字符串就是要分离操作,貌似比较可行的就是结构规范化的XML,解析也方便