我想将一组id传递给将使用NHibernate映射的存储过程.这种技术是在Sql Server 2008中引入的(更多信息在这里=> 表值参数).我只是不想在nvarchar参数中传递多个ID ,然后在SQL Server端切断它的值.
这个答案对这个问题很好,但是我正在寻找ADO.NET代码能够数组或表发送到Oracle程序,然后使用该表的过程.
在SQL Server表值参数中,它非常简单:
CREATE TYPE [dbo].[IntTable] AS TABLE(
[intvalue] [int] NOT NULL,
PRIMARY KEY CLUSTERED
(
[intvalue] ASC
)WITH (IGNORE_DUP_KEY = OFF)
)
GO
CREATE PROCEDURE dbo.UseTable
@SomeInt INT
,@IntTable dbo.IntTable READONLY
AS
BEGIN
-- Do whatever using @SomeInt and @IntTable like:
INSERT INTO Assignments (masterid, childid)
SELECT @SomeInt, intvalue
FROM @IntTable
END
GO
Run Code Online (Sandbox Code Playgroud)
然后在客户端:
var param = new List<int>();
param.Add(1);
param.Add(2);
Cm.Parameters
.AddWithValue("@IntTable", param /* IEnumerable<Int> */)
.SqlDbType = SqlDbType.Structured
Run Code Online (Sandbox Code Playgroud)
这就是我目前拥有的:
CREATE OR REPLACE TYPE TRAIT_ID_TABLE …Run Code Online (Sandbox Code Playgroud)