我正在使用带有实体框架6的oracle 12 c,具体取决于.net(ODP.net)的oracle数据提供程序。当我尝试在插入过程中为计算列添加结果绑定时,我得到'索引超出了数组'异常的范围。
以下是方案详细信息: 使用oracle 12 c我创建了这个包含'commision'作为计算列(vrtual)
的表CREATE TABLE emp(
id NUMBER,
first_name VARCHAR2(10),
last_name VARCHAR2(10),
salary NUMBER(9,2),
commision NUMBER GENERATED ALWAYS AS (ROUND(salary*0.1,2)) VIRTUAL,
CONSTRAINT employees_pk PRIMARY KEY (id)
);
之后我创建了一个插入过程,在最后返回插入的记录:
CREATE OR REPLACE PROCEDURE sprocEMP_INSERT
(
first_name_P EMP.first_name%TYPE ,
last_name_P EMP.last_name%TYPE ,
salary_P EMP.salary%TYPE ,
curParam OUT SYS_REFCURSOR
)
IS
RECORD_ID EMPLOYEES.EMPLOYEE_ID%TYPE;
BEGIN
RECORD_ID := EMPLOYEES_SEQ.NEXTVAL;
INSERT INTO HR.EMPLOYEES
(
id ,
first_name ,
last_name ,
salary
)
VALUES
(
RECORD_ID ,
first_name_P,
last_name_P ,
salary_P
);
COMMIT;
OPEN curParam FOR
SELECT * FROM EMP
WHERE ID = RECORD_ID;
END;
然后我将它们导入EF模型并映射插入过程,如链接图像:
到目前为止,每件事情都是好的,插入程序运行良好并返回id值,但是当我添加任何其他计算列(如链接图像中)时,我得到'索引超出了界限数组'异常
EF Model which cause exception
例外详细信息:
栈跟踪
at Oracle.ManagedDataAccess.Client.OracleDataReader.GetValue(Int32 i)
at System.Data.Entity.Core.Mapping.Update.Internal.FunctionUpdateCommand.Execute(Dictionary`2 identifierValues, List`1 generatedValues)
at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()
来源
Oracle.ManagedDataAccess