I need to know if NHibernate supports passing a collection (List<string> or string[]) to a stored procedure, or if there are any alternative ways to do it.
Oracle Package
CREATE OR REPLACE PACKAGE THE_PACKAGE AS
TYPE STRING_ARRAY IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
PROCEDURE PROCESS_SELECTED_RECORDS(p_IDS_ARRAY IN STRING_ARRAY);
END THE_PACKAGE;
CREATE OR REPLACE PACKAGE BODY THE_PACKAGE AS
PROCEDURE PROCESS_SELECTED_RECORDS(p_IDS_ARRAY IN STRING_ARRAY) IS
BEGIN
FOR i IN 1 .. p_IDS_ARRAY.COUNT LOOP
-- DO THINGS
END LOOP;
END;
END THE_PACKAGE;
XML NHibernate Mapping
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<sql-query name="THE_PACKAGE.PROCESS_SELECTED_RECORDS">
CALL THE_PACKAGE.PROCESS_SELECTED_RECORDS(:p_IDS_ARRAY)
</sql-query>
</hibernate-mapping>
C# Procedure call
var query = session.GetNamedQuery("THE_PACKAGE.PROCESS_SELECTED_RECORDS");
query.SetParameter("p_IDS_ARRAY ", selectedIds);
query.ExecuteUpdate();