Я создал таблицу как тип в 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
Вызов из 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();
