使用 PHP PDO 在 SQL 中将多行传递给 UDF

Posted

技术标签:

【中文标题】使用 PHP PDO 在 SQL 中将多行传递给 UDF【英文标题】:Pass multiple rows to UDF in TSQL using PHP PDO 【发布时间】:2017-01-08 05:44:58 【问题描述】:

我目前在 TSQL 中有一个查询,它接收产品 ID 和相关价格的集合并计算折扣价。目前,产品 ID 和初始定价都在数据库中,我编写的查询与这些项目相连接。该查询根据查询中之前出现的其他产品设置定价,因此我不能使用单个查询来查询产品一的价格,然后是产品二的价格,等等。必须对它们进行评估作为一个集合在一起。

我现在必须将此折扣逻辑重构为一个表值 UDF,它将以两种方式使用:

    现有方法,需要针对 ID 集合和数据库中现有的定价执行折扣定价。 一种新方法,我需要将 ID 和初始定价从 php 传递到 UDF(它们不会存在于数据库中)。

我对每一点的问题是:

    我基本上需要将一个表传递给 UDF。根据我的阅读,这意味着我需要创建自己的用户定义表类型,将数据库中的产品 ID/定价查询到该表类型,然后作为参数传递给 UDF。对吗? 新方法是我真正迷失的地方,因为我不确定如何在 PHP 中获取基本上是一组 ID/价格对(想想购物车)并将其传递给我的 UDF 以获得结果价钱。我可以手动破解一个查询,该查询从多个单行语句生成我的用户定义表 my 和 UNION 它们一起,但不知道如何将多个“行”从 PHP 传递到 UDF。

处理这个问题的正确方法是什么?

【问题讨论】:

【参考方案1】:

完全归功于https://forums.whirlpool.net.au/forum-replies.cfm?t=2598049

定义一个“用户定义的表类型”,它定义了要传递给 UDF 的表结构, 例如 创建类型 [PRODUCTIDPRICING] 为 桌子( 产品 INT, 产品价格数字 (18,2) ) 当想要更新您的定价时,您的 TSQL 将执行以下操作:

    将变量声明为表类型 DECLARE @PRODUCTSTODISCOUNT PRODUCTIDPRICING; 将数据插入表中 insert into @PRODUCTSTODISCOUNT values (1,1.23) 通过@PRODUCTSTODISCOUNT 变量执行您的UDF

【讨论】:

以上是关于使用 PHP PDO 在 SQL 中将多行传递给 UDF的主要内容,如果未能解决你的问题,请参考以下文章

如何在php中将div值传递给mysql查询[关闭]

SQL Server 错误 1934 发生在 INSERT 到具有计算列 PHP/PDO 的表中

如何使用 PHP PDO 在 mySQL 中插入多行 JSON 对象数据?

使用 PHP PDO 将参数传递给 SQL Server 存储过程

在 PHP 中将 PDO 记录集转换为 JSON [重复]

将数据库和PDO选项数组传递到我的连接PHP文件中