SQL 服务器存储过程。 Select 并更新
SQL Server stored procedure . Select and update
我被困住了,需要一些帮助。我正在使用 SQL Server 2017。
我写了一个存储过程,它被拉入 Crystal 报告。该报告是一个拣选清单。打印后我想用 'Y'
更新列 PickingSlip
ALTER PROCEDURE [dbo].[Picking]
AS
BEGIN
SET NOCOUNT ON;
SELECT
SorMaster.SalesOrder, SorDetail.SalesOrderLine, SorDetail.StockCode, SorDetail.OrderQty, SorDetail.ShipQty
FROM
SorMaster
INNER JOIN
SorDetail ON SorMaster.SalesOrder = SorDetail.SalesOrder
WHERE
SorDetail.OrderQty = SorDetail.ShipQty
AND (PickingSlip = '')
UPDATE SorDetail
SET PickingSlip = 'Y'
WHERE
SorDetail.OrderQty = SorDetail.ShipQty
AND PickingSlip = ''
END
报表为空白。更新正在运行,所以我猜 SP 已完成,然后将输出生成到 Crystal 报告中,这就是为什么我没有看到任何内容的原因。
如何在更新的同时获得输出?
Crystal 不知道应该使用 SP 的哪一部分作为结果集。
也许您可以将 SELECT 加载到临时 table 中,进行更新,然后返回临时文件 table.
或者删除更新语句并从子报表中使用的另一个 SP 调用它。
或者使用 UFL 从 Crystal 公式调用更新语句。
我被困住了,需要一些帮助。我正在使用 SQL Server 2017。
我写了一个存储过程,它被拉入 Crystal 报告。该报告是一个拣选清单。打印后我想用 'Y'
更新列PickingSlip
ALTER PROCEDURE [dbo].[Picking]
AS
BEGIN
SET NOCOUNT ON;
SELECT
SorMaster.SalesOrder, SorDetail.SalesOrderLine, SorDetail.StockCode, SorDetail.OrderQty, SorDetail.ShipQty
FROM
SorMaster
INNER JOIN
SorDetail ON SorMaster.SalesOrder = SorDetail.SalesOrder
WHERE
SorDetail.OrderQty = SorDetail.ShipQty
AND (PickingSlip = '')
UPDATE SorDetail
SET PickingSlip = 'Y'
WHERE
SorDetail.OrderQty = SorDetail.ShipQty
AND PickingSlip = ''
END
报表为空白。更新正在运行,所以我猜 SP 已完成,然后将输出生成到 Crystal 报告中,这就是为什么我没有看到任何内容的原因。
如何在更新的同时获得输出?
Crystal 不知道应该使用 SP 的哪一部分作为结果集。 也许您可以将 SELECT 加载到临时 table 中,进行更新,然后返回临时文件 table.
或者删除更新语句并从子报表中使用的另一个 SP 调用它。
或者使用 UFL 从 Crystal 公式调用更新语句。