Sql server 使用PHP PDO将多行传递给TSQL中的UDF

Sql server 使用PHP PDO将多行传递给TSQL中的UDF,sql-server,tsql,pdo,udf,table-valued-parameters,Sql Server,Tsql,Pdo,Udf,Table Valued Parameters,我目前在TSQL中有一个查询,它接收产品ID和相关价格的集合,并计算折扣价格。目前,产品ID和初始定价都在数据库中,我编写的查询针对这些项目进行了关联。查询根据查询中之前的其他产品设置定价,因此我不能对产品一、产品二等的价格使用单独的查询。它们必须作为一个集合进行评估 现在,我必须将此折扣逻辑重构为表值UDF,该UDF将以两种方式使用: 现有方法,其中需要对ID集合和DB中现有的定价执行折扣定价 一种新的方法,我需要将id和初始定价从PHP传递到UDF中(它们在DB中不存在) 我对每一点的问题是

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

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

  • 现有方法,其中需要对ID集合和DB中现有的定价执行折扣定价
  • 一种新的方法,我需要将id和初始定价从PHP传递到UDF中(它们在DB中不存在)
  • 我对每一点的问题是:

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

    完全归功于

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

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