CFQL/存储过程方法中的数组参数
Array parameter in CFQL / stored procedure method
是否可以将参数数组传递给通过CFQL生成的存储过程?
我们从设计师那里生成的方法没有任何问题。但我还没有找到任何方法在 SQL 服务器上执行它。
尝试通过代码执行时,代码会失败并出现给定错误:
Operand type clash: table type is incompatible with int
在生成的行上:
System.Data.IDataReader reader = CodeFluentContext.Get(XYZ.Constants.XYZCodeFluentStoreName).Persistence.ExecuteReader();
CFQL正文如下:
LOAD (enumABCGroup[] groups) WHERE ABC.Group IN (@groups) ORDER BY NumberExt
生成的过程是:
CREATE PROCEDURE [XYZ].[ABC_LoadByGroups]
(
@groups [int],
@_orderBy0 [nvarchar] (64) = NULL,
@_orderByDirection0 [bit] = 0
)
AS
SET NOCOUNT ON
SELECT DISTINCT ...
FROM [XYZ].[ABC]
WHERE [XYZ].[ABC].[ABC_Group] IN (@groups)
ORDER BY [XYZ].[ABC].[ABC_Group] ASC, [XYZ].[ABC].[ABC_Label] ASC
RETURN
GO
底层数据库系统是SQL Server 2012 (v11.0.5058.0)。
感谢您的帮助;
我想你忘了配置 SQL 服务器生产者至少要面向 SQL Server 2008:
或 XML:
<cf:producer name="SQL Server" typeName="CodeFluent.Producers.SqlServer.SqlServerProducer, CodeFluent.Producers.SqlServer">
<cf:configuration targetVersion="Sql2008" />
</cf:producer>
这里有一些关于 CodeFluent 实体和 TVP 的有用资源:
- http://blog.codefluententities.com/2015/02/11/table-valued-parameters-basics/
- http://blog.codefluententities.com/2015/07/10/table-valued-parameters-cfql-operators-2/
- http://blog.codefluententities.com/2015/07/24/table-valued-parameters-multi-columns/
- http://blog.codefluententities.com/2015/07/31/table-valued-parameters-reuse-model-collection-types/
是否可以将参数数组传递给通过CFQL生成的存储过程?
我们从设计师那里生成的方法没有任何问题。但我还没有找到任何方法在 SQL 服务器上执行它。
尝试通过代码执行时,代码会失败并出现给定错误:
Operand type clash: table type is incompatible with int
在生成的行上:
System.Data.IDataReader reader = CodeFluentContext.Get(XYZ.Constants.XYZCodeFluentStoreName).Persistence.ExecuteReader();
CFQL正文如下:
LOAD (enumABCGroup[] groups) WHERE ABC.Group IN (@groups) ORDER BY NumberExt
生成的过程是:
CREATE PROCEDURE [XYZ].[ABC_LoadByGroups]
(
@groups [int],
@_orderBy0 [nvarchar] (64) = NULL,
@_orderByDirection0 [bit] = 0
)
AS
SET NOCOUNT ON
SELECT DISTINCT ...
FROM [XYZ].[ABC]
WHERE [XYZ].[ABC].[ABC_Group] IN (@groups)
ORDER BY [XYZ].[ABC].[ABC_Group] ASC, [XYZ].[ABC].[ABC_Label] ASC
RETURN
GO
底层数据库系统是SQL Server 2012 (v11.0.5058.0)。
感谢您的帮助;
我想你忘了配置 SQL 服务器生产者至少要面向 SQL Server 2008:
或 XML:
<cf:producer name="SQL Server" typeName="CodeFluent.Producers.SqlServer.SqlServerProducer, CodeFluent.Producers.SqlServer">
<cf:configuration targetVersion="Sql2008" />
</cf:producer>
这里有一些关于 CodeFluent 实体和 TVP 的有用资源:
- http://blog.codefluententities.com/2015/02/11/table-valued-parameters-basics/
- http://blog.codefluententities.com/2015/07/10/table-valued-parameters-cfql-operators-2/
- http://blog.codefluententities.com/2015/07/24/table-valued-parameters-multi-columns/
- http://blog.codefluententities.com/2015/07/31/table-valued-parameters-reuse-model-collection-types/