- , .
, , , , . , ( , , ).
, , udfRequiresSpecialColor
:
SELECT
dbo.Product.Job_number
FROM
dbo.MfgGrouping
INNER JOIN
dbo.ProductMfgGrouping
ON dbo.MfgGrouping.MfgGroupingID = dbo.ProductMfgGrouping.MfgGroupingID
INNER JOIN
dbo.Product
ON dbo.ProductMfgGrouping.Record_no = dbo.Product.Record_no
INNER JOIN
dbo.GroupOperations
ON dbo.MfgGrouping.MfgGroupingID = dbo.GroupOperations.MfgGroupingID
AND (dbo.GroupOperations.ShopRoutingID IN (23, 24, 25))
, Job_number
, , .
OUTER APPLY:
SELECT
...
RequiresSpecialPaint
...
OUTER APPLY
(
SELECT dbo.udfRequiresSpecialColor(JC.job_number) AS RequiresSpecialPaint
) AS jcolumn
... LEFT JOIN :
SELECT
...
IIF(jobs_requiring_special_paint.job_number IS NOT NULL, 1, 0) AS RequiresSpecialPaint
...
LEFT JOIN
(
[here you can either a call to the new udfRequiresSpecialColor defined as a database view or an inlinable function, or simply include the code above as a subquery]
) AS jobs_requiring_special_paint
ON (JC.job_number = jobs_requiring_special_paint.job_number)
, , NULL , , - 0/1 select, .
, , , , .
, , .
, , OUTER APPLY, ( ) , ON.
, udfGetDueByPerOperation
, , , udfRequiresSpecialColor
( MfgGrouping, ProductMfgGrouping, Product, GroupOperations
), (INNER JOINs ), ShopRouting
.
, ( , , / WITH), , JOIN . , , , , , , , , . , , .
, , udfGetManStatusNew
, , , .
, , , , , , _, job_control
, OUTER APPLY, udfGetGroupOperationsCount
( , ) @OperationCount
( ). , "" , , ).
, , , , , .
, , - , .
, . , .
EDIT:
, .
, , , , . , , ( , ).
/ ( , , DUAL SQL Server, Oracle, ):
CREATE FUNCTION [dbo].[fxn_imperative]
(
@dummy VARCHAR(1)
)
RETURNS INT
AS
BEGIN
DECLARE @ReturnVal int;
IF EXISTS (SELECT 1 FROM DUAL WHERE DUMMY = @dummy)
BEGIN
SET @ReturnVal = 1
END
ELSE
BEGIN
SET @ReturnVal = 0
END
Return @ReturnVal;
END
CREATE FUNCTION [dbo].[fxn_inline]
(
@dummy VARCHAR(1)
)
RETURNS TABLE
AS
RETURN
(
SELECT ISNULL( (SELECT 1 FROM DUAL WHERE DUMMY = @dummy), 0) AS dummy_exists
)
, , .
LEFT JOIN - ( ) ( _ , , ). , .
, ( , OUTER APPLYed), ( , - / ):
CREATE FUNCTION [dbo].[udfRequiresSpecialColor2]
(
@SalesOrder INT
)
RETURNS TABLE
AS
RETURN
(
WITH special_paint_subquery AS
(
SELECT
dbo.Product.Job_number
FROM
dbo.MfgGrouping
INNER JOIN
dbo.ProductMfgGrouping
ON dbo.MfgGrouping.MfgGroupingID = dbo.ProductMfgGrouping.MfgGroupingID
INNER JOIN
dbo.Product
ON dbo.ProductMfgGrouping.Record_no = dbo.Product.Record_no
INNER JOIN
dbo.GroupOperations
ON dbo.MfgGrouping.MfgGroupingID = dbo.GroupOperations.MfgGroupingID
AND (dbo.GroupOperations.ShopRoutingID IN (23, 24, 25))
)
SELECT ISNULL( (SELECT 1 FROM special_paint_subquery WHERE dbo.Product.Job_number = @SalesOrder), 0) AS requires_special_paint
)
, , .
, udfRequiresSpecialColor - , job_number, .
, ( WITH special_paint_subquery ...
, WHERE dbo.Product.Job_number = @SalesOrder
, SELECT , NULL- , ).