CREATE FUNCTION [dbo].[fn_InventoryPositionSet]
(
@PointInTime DATETIME,
@EOD BIT,
@AccountList Varchar(max)
)
RETURNS @OffersTable TABLE
(
Account VARCHAR(10),
PositionId VARCHAR(150),
VersionDate DATETIME,
ProductType VARCHAR(50),
XRef VARCHAR(50),
XRefType VARCHAR(20),
Desk VARCHAR(50)
)
AS
BEGIN
IF @EOD = 1
SET @PointInTime = dbo.COBTimestamp(@PointInTime)
IF @AccountList is not NULL
INSERT INTO @OffersTable
SELECT
P.Account,
P.UniquePositionId AS [PositionId],
P.Desk,
P.VersionEffective AS [VersionDate],
P.ProductType,
P.XRef,
P.XRefType
FROM MarkingInventory AS P WITH(nolock)
LEFT JOIN
Spirit.dbo.GetTableOfInputs(@AccountList) A
ON
(
(P.Account = A.Input)
AND
@AccountList IS NOT NULL
)
WHERE
@PointInTime >= P.VersionEffective AND @PointInTime < P.VersionExpiration and P.Account = A.Input
ELSE
INSERT INTO @OffersTable
SELECT
P.Account,
P.UniquePositionId AS [PositionId],
P.Desk,
P.VersionEffective AS [VersionDate],
P.ProductType,
P.XRef,
P.XRefType
FROM MarkingInventory AS P WITH(nolock)
WHERE
@PointInTime >= P.VersionEffective AND @PointInTime < P.VersionExpiration
RETURN
END
세 가지 매개 변수를 사용하는이 함수를 만들었습니다. 이 함수의 실행과 관련하여 몇 가지 질문이 있습니다.문자열에서 날짜 및/또는 시간을 변환 할 때 SQL Server 함수 오류가 발생했습니다.
변환 내가 방식
select * from [dbo].[fn_InventoryPositionSet] (GETDATE(), 1, null)
다음의이 기능을 실행하려고 할 때 문자열에서 날짜 및/또는 시간을 변환하는
이 내가받을 오류 때 실패 그것은 패스 할 때조차도 실패 함 getdate()
대신
또한 목록 형식으로 매개 변수를 전달하는 방법을 배우고 싶습니다. 매개 변수 중 하나가 목록 형식이므로 기능에 대한 추가 정보가 필요한 경우 알려 주시기 바랍니다. 이 [dbo].[COBTimestamp]
에
CREATE FUNCTION [dbo].[COBTimestamp]
(
@COBDate DATETIME
)
RETURNS DATETIME
AS
BEGIN
RETURN DATEADD(day, DATEDIFF(day, 0, @COBDate), '23:59:59')
END
GO
'23 : 59 : 59 '이 변환 할 수 없습니다 'DATETIME'으로 변경하십시오. 또한 올바른 태그. –
수정 된 태그. 당신의 설명을 들여다 볼 것입니다. 감사합니다. – user2087822
'PL/SQL'에는'DATEADD' 함수가 없습니다. 난 당신이'SQL 서버'를 사용한다고 가정합니다. –