Bạn sẽ không thể thực hiện việc này dễ dàng với System.Data.OracleClient không được dùng nữa nhưng bạn có thể sử dụng ODP của oracle với việc sử dụng UDT. Nếu đó không phải là một tùy chọn, tôi không chắc bạn có thể thực hiện nó như thế nào thông qua các tham số trong C # với System.Data.
ODP có rất nhiều ví dụ và có các ví dụ trong các liên kết trên.
Tôi sẽ thêm một số liên kết khác hy vọng sẽ hữu ích:
- chỉ mục ODP của studio trực quan
- điều này cho bạn biết chính xác cách sử dụng ODT để tạo cho bạn các trình bao bọc lớp tùy chỉnh và gọi chúng (lưu ý rằng việc này đang diễn ra giữa chừng, họ hướng dẫn cách sử dụng công cụ để tạo các loại tùy chỉnh bên trên nó trong ví dụ - hướng dẫn này khá kỹ lưỡng và sẽ đưa bạn đến đúng nơi bạn cần)
- Tải xuống :bây giờ anh chàng này cũng cài đặt các tệp mẫu, đây là một ví dụ tuyệt vời khác về chính xác những gì bạn cần làm:sau khi cài đặtgoto [đường dẫn thư mục bạn cài đặt] .. \ product \ 11.2.0 \ client_1 \ odp.net \ samples \ 4 \ UDT \ object1.cs
Nó thực sự trả tiền để cho phép các công cụ ODT cho Visual studio tạo các lớp cho UDT của bạn cho bạn (ví dụ:IOracleCustomType, v.v.). sau đó bạn có thể đi vào chúng và sửa đổi chúng cho phù hợp với nhu cầu của bạn. sau đó khi tất cả được nói và hoàn thành (đoạn trích từ object1.cs):
Person p1 = new Person();
p1.Name = "John";
p1.Address = "Address1";
p1.Age = 20;
// Establish a connection to Oracle
OracleConnection con = new OracleConnection(constr);
con.Open();
// Update Person object and insert it into a database table
OracleCommand cmd = new OracleCommand(sql1, con);
cmd.CommandType = CommandType.StoredProcedure;
OracleParameter param1 = new OracleParameter();
param1.OracleDbType = OracleDbType.Object;
param1.Direction = ParameterDirection.InputOutput;
// Note: The UdtTypeName is case-senstive
param1.UdtTypeName = "SCOTT.ODP_OBJ1_SAMPLE_PERSON_TYPE";
param1.Value = p1;
cmd.Parameters.Add(param1);
cũng lưu ý rằng lớp Person phải triển khai IOracleCustomType (có thể được tạo bằng cách nhấp vào liên kết trong # 2)
/* Person Class
An instance of a Person class represents an ODP_OBJ1_SAMPLE_PERSON_TYPE object
A custom type must implement INullable and IOracleCustomType interfaces
*/
public class Person : INullable, IOracleCustomType
Ở trên là dành cho loại tùy chỉnh đầy đủ, nhưng bạn đang ở sau một liên kết ODP mảng kết hợp:
http://weblogs.asp .net / ricardoperes / archive / 2009/05/14 / odp-net-Associative-array.aspx
bạn sẽ muốn sử dụng
param1.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
và mọi thứ sẽ vào đúng vị trí