0
我有這個套餐:甲骨文「PL/SQL表」類型OracleDbType型
create or replace PACKAGE pkg_stud_clm_data IS
TYPE t_test_clm_data_rec IS RECORD
(
p_studentID SYSTEM.STUDENT.student_id%TYPE,
p_LastName SYSTEM.STUDENT.last_name%tYPE,
p_ModifiedDate SYSTEM.STUDENT.modified_date%TYPE,
p_ModifiedBy SYSTEM.STUDENT.modified_by%TYPE,
p_RegDate SYSTEM.STUDENT.registration_date%TYPE,
p_CreatedDate SYSTEM.STUDENT.created_date%TYPE,
p_CreatedBy SYSTEM.STUDENT.created_by%TYPE,
p_Zip SYSTEM.student.zip%TYPE
);
TYPE t_test_clm_data_ref IS REF CURSOR
RETURN t_test_clm_data_rec;
TYPE t_test_clm_data_tab IS TABLE OF t_test_clm_data_rec
INDEX BY BINARY_INTEGER;
PROCEDURE PROC_INS_STUDENT(io_table IN OUT t_test_clm_data_tab);
END pkg_stud_clm_data;
其中林內使用這個包體:
create or replace PACKAGE BODY pkg_stud_clm_data IS
PROCEDURE PROC_INS_STUDENT
(
io_table IN OUT t_test_clm_data_tab
)
IS
BEGIN
FOR idx IN io_table.FIRST .. io_table.LAST LOOP
INSERT INTO SYSTEM.STUDENT(
STUDENT_ID,
LAST_NAME,
MODIFIED_DATE,
MODIFIED_BY,
REGISTRATION_DATE,
CREATED_DATE,
CREATED_BY,
ZIP
)
VALUES
(
io_table(idx).p_studentID,
io_table(idx).p_LastName,
io_table(idx).p_ModifiedDate,
io_table(idx).p_ModifiedBy,
io_table(idx).p_RegDate,
io_table(idx).p_CreatedDate,
io_table(idx).p_CreatedBy,
io_table(idx).p_Zip
);
END LOOP;
END PROC_INS_STUDENT;
END pkg_stud_clm_data;
問題是,當我試着打電話它來自.Net和創建輸入參數爲io_table它有一個Data_Type爲「PL/SQL TABLE」我無法找出OracleDbType類型來創建IN OUT參數。
我已經嘗試使用:
OracleDbType.RefCursor,
OracleDbType.Object,
OracleDbType.Array
但我不斷收到錯誤如下: 陣列= Invalid parameter binding Parameter name: "IO_TABLE"
對象= Invalid parameter binding Parameter name: "IO_TABLE"
而對於REFCURSOR,我相信我應該用我得到:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'PROC_INS_STUDENT'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
看來我一直在我的.Net端做了一些錯誤的事情我發現了一個例子,他們如何從.Net的PL \ SQL表中發送插入記錄到Oracle數據庫的記錄:http://www.oracle .com/technetwork/issue-archive/2007/07-jan/o17odp-093600.html 我只是沒有看到任何能告訴我是否可以一次發送整個表而不是每個coloum的表 – Domitius 2014-09-30 12:23:27