В SQL Server 2008 Я могу передать возвращающий табличное значение параметр в мою хранимую процедуру из NHibernate. Как добиться того же в Oracle

Я создал таблицу как тип в 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();
6
задан marc_s 6 May 2011 в 20:27
поделиться