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)
Это терпит неудачу даже при прохождении 2012-03-10
вместо getdate()
Я также хочу узнать, как передавать параметры в виде списка. Поскольку один из параметров представлен в виде списка. Сообщите мне, хотите ли вы получить дополнительную информацию о функции.
Это функция, которая используется в функции, написанной выше:
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 Server'. –