作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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
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();
最佳答案
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;
关于nhibernate - 在 SQL Server 2008 中,我可以将表值参数从 NHibernate 传递给我的存储过程。如何在 Oracle 中实现相同的目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5868234/
我是一名优秀的程序员,十分优秀!