将Table Valued参数传递给存储过程

Phi*_*enn 4 coldfusion sql-server-2008

下面是如何在使用.NET的SQL Server 2008存储过程中使用表值参数的示例.

是CF9中的参数类型列表.

问:ColdFusion是否可以将表值参数传递给Microsoft SQL Server 2008存储过程?

mar*_*ers 7

简答:没有支持,它应该投票给它!

长答案:Coldfusion可以使用JDBC,它还不支持TVP,但它应该.在此投票:http: //mssqlconn.uservoice.com/forums/113295-feature-feedback/suggestions/2269687-table-valued-parameters-tvp-support-in-jdbc

XML可以工作,但使用TVP可以使客户端和sproc代码更易于读取,编写,查看和调试.在大多数情况下,它也更快,具体取决于API的实现.

仅供参考,使用Oracle并不是更好.它们具有ARRAY SQL数据类型(最接近TVP).JDBC也不支持它:使用数组对象


小智 5

我发现了这个解决方法。您可以从 cfquery 中调用存储过程,这样您就可以传入表值参数 TVP。

<cfquery datasource="" name="">
     DECLARE        @return_value int

     -- Create table value parameter
     DECLARE @DataTVP tDataTable;

     --Build Table
     INSERT INTO @DataTVP(DataId)
     VALUES (1),(2),(3)

     EXEC        @return_value = P_DeleteItems
                 @tvpData = @DataTVP --Pass table into Stored Procedure

     SELECT        'Return Value' = @return_value 
</cfquery>
Run Code Online (Sandbox Code Playgroud)