我需要做的是将 C# DataTable 传递给 Oracle 存储过程。
这是我所做的:
甲骨文方面:
创建了一个类型:
create or replace TYPE CUSTOM_TYPE AS OBJECT
(
attribute1 VARCHAR(10),
attribute2 VARCHAR(10)
);
Run Code Online (Sandbox Code Playgroud)创建了一个表
create or replace TYPE CUSTOM_TYPE_ARRAY AS TABLE OF CUSTOM_TYPE;
Run Code Online (Sandbox Code Playgroud)创建了存储过程
create or replace PROCEDURE SP_TEST
(
P_TABLE_IN IN CUSTOM_TYPE_ARRAY,
P_RESULT_OUT OUT SYS_REFCURSOR
) AS
--P_TABLE_IN CUSTOM_TYPE_ARRAY;
BEGIN
OPEN P_RESULT_OUT FOR
SELECT attribute1, attribute2
FROM TABLE(P_TABLE_IN);
END SP_TEST;
Run Code Online (Sandbox Code Playgroud)C#方面:
void Run()
{
OracleConnection oraConn = new OracleConnection();
oraConn.ConnectionString = ConfigurationManager.ConnectionStrings["NafasV2ConnectionString"].ToString();
DataSet dataset = new DataSet();
DataTable Dt = …Run Code Online (Sandbox Code Playgroud)