anu*_*pam 6 nhibernate stored-procedures oracle11g sql-server-2008
我在SQL Server 2008中创建了一个表作为类型.
由于SQL Server 2008支持将表值参数作为IN参数传递给存储过程.它工作正常.
现在我必须在Oracle中执行相同的方法.
我做到了PLSQLAssociativeArray
但是关联数组的限制是它们是同质的(每个元素必须是相同的类型).
在SQL Server 2008的表值参数的情况下,它是可能的.
如何在Oracle中实现同样的目标.
以下是我在SQL Server 2008中的类型和存储过程:
CREATE TYPE [dbo].[EmployeeType] AS TABLE(
[EmployeeID] [int] NULL,
[EmployeeName] [nvarchar](50) NULL
)
GO
CREATE PROCEDURE [dbo].[TestCustom] @location EmployeeType READONLY
AS
insert into Employee (EMP_ID,EMP_NAME)
SELECT EmployeeID,EmployeeName
FROM @location;
GO
Run Code Online (Sandbox Code Playgroud)
来自NHibernate的电话
var dt = new DataTable();
dt.Columns.Add("EmployeeID", typeof(int));
dt.Columns.Add("EmployeeName", typeof(string));
dt.Rows.Add(new object[] { 255066, "Nachi11" });
dt.Rows.Add(new object[] { 255067, "Nachi12" });
ISQLQuery final = eventhistorysession.CreateSQLQuery("Call TestCustom @pLocation = :id");
IQuery result = final.SetStructured("id", dt);
IList finalResult = result.List();
Run Code Online (Sandbox Code Playgroud)
CREATE OR REPLACE TYPE employeeType AS OBJECT (employeeId INT, employeeName VARCHAR2(50));
CREATE TYPE ttEmployeeType AS TABLE OF employeeType;
CREATE PROCEDURE testCustom (pLocation ttEmployeeType)
AS
BEGIN
INSERT
INTO employee (emp_id, emp_name)
SELECT *
FROM TABLE(pLocation);
END;
Run Code Online (Sandbox Code Playgroud)