Hi,
I'm trying to write a trigger that will create a record in a table when a value is changed.
When I fire the trigger, I get this error:
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value
The problem lies in the passing of a date to a stored procedure, but it only occurs when I call the SP from the trigger. If I replicate the process in a normal T-SQL query, it works fine. Can anybody help?
Trigger Code:
ALTER TRIGGER [dbo].[CreatePropertyTasks]
ON [dbo].[DW_PROPERTY]
FOR INSERT, UPDATE
AS
DECLARE @DW_DT_UID AS nvarchar(10)
DECLARE @DW_PR_ADDRESS AS nvarchar(100)
DECLARE @DW_PR_REALIZATION AS decimal
DECLARE @DW_PR_REALIZATION_DATE AS datetime
DECLARE @TaskDetail AS nvarchar(100)
IF UPDATE(DW_PR_REALIZATION)
BEGIN
SELECT @DW_DT_UID = DW_PR_DT_UID,
@DW_PR_REALIZATION_DATE = DW_PR_REALIZATION_DATE,
@DW_PR_REALIZATION = DW_PR_REALIZATION,
@DW_PR_ADDRESS = DW_PR_ADDRESS1
FROM inserted
DELETE FROM DW_TASK
WHERE (DW_TK_UID = @DW_DT_UID)
AND (DW_TK_TT_UID = 29)
AND ((DW_TK_DESC LIKE 'Lump Sum from property realisation due')
OR (DW_TK_DESC LIKE 'Check availability of Lump Sum%'))
SET @TaskDetail = 'Lump Sum from property realisation due'
-- Insert Task on Due Date
EXEC UpdateTask
@DW_TK_UID = -1,
@DW_TK_TT_UID = 29,
@DW_TK_DT_UID = @DW_DT_UID,
@DW_TK_USER_NAME = '',
@DW_TK_DESC = @TaskDetail,
@DW_TK_SCHEDULED = 'Y',
@DW_TK_SCHEDULED_TIME = @REALIZATION_DATE,
@DW_TK_ACTION = @TaskDetail,
@DW_TK_COMPLETED = 0
END
T-SQL Code:
DECLARE @DW_DT_UID AS nvarchar(10)
DECLARE @DW_PR_ADDRESS AS nvarchar(100)
DECLARE @DW_PR_REALIZATION AS decimal
DECLARE @DW_PR_REALIZATION_DATE AS datetime
set @dw_dt_uid = 36106
print @dw_dt_uid
SELECT
@DW_PR_REALIZATION_DATE = DW_PR_REALIZATION_DATE,
@DW_PR_REALIZATION = DW_PR_REALIZATION,
@DW_PR_ADDRESS = DW_PR_ADDRESS1
FROM DW_PROPERTY
WHERE DW_PR_DT_UID = @DW_DT_UID
exec UpdateTask
@DW_TK_UID = -1,
@DW_TK_TT_UID = 29,
@DW_TK_DT_UID = @DW_DT_UID,
@DW_TK_USER_NAME = '',
@DW_TK_DESC = 'Test Task using SP',
@DW_TK_SCHEDULED = 'Y',
@DW_TK_SCHEDULED_TIME = @DW_PR_REALIZATION_DATE,
@DW_TK_ACTION = 'Test Task using SP',
@DW_TK_COMPLETED = 0
I'm trying to write a trigger that will create a record in a table when a value is changed.
When I fire the trigger, I get this error:
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value
The problem lies in the passing of a date to a stored procedure, but it only occurs when I call the SP from the trigger. If I replicate the process in a normal T-SQL query, it works fine. Can anybody help?
Trigger Code:
ALTER TRIGGER [dbo].[CreatePropertyTasks]
ON [dbo].[DW_PROPERTY]
FOR INSERT, UPDATE
AS
DECLARE @DW_DT_UID AS nvarchar(10)
DECLARE @DW_PR_ADDRESS AS nvarchar(100)
DECLARE @DW_PR_REALIZATION AS decimal
DECLARE @DW_PR_REALIZATION_DATE AS datetime
DECLARE @TaskDetail AS nvarchar(100)
IF UPDATE(DW_PR_REALIZATION)
BEGIN
SELECT @DW_DT_UID = DW_PR_DT_UID,
@DW_PR_REALIZATION_DATE = DW_PR_REALIZATION_DATE,
@DW_PR_REALIZATION = DW_PR_REALIZATION,
@DW_PR_ADDRESS = DW_PR_ADDRESS1
FROM inserted
DELETE FROM DW_TASK
WHERE (DW_TK_UID = @DW_DT_UID)
AND (DW_TK_TT_UID = 29)
AND ((DW_TK_DESC LIKE 'Lump Sum from property realisation due')
OR (DW_TK_DESC LIKE 'Check availability of Lump Sum%'))
SET @TaskDetail = 'Lump Sum from property realisation due'
-- Insert Task on Due Date
EXEC UpdateTask
@DW_TK_UID = -1,
@DW_TK_TT_UID = 29,
@DW_TK_DT_UID = @DW_DT_UID,
@DW_TK_USER_NAME = '',
@DW_TK_DESC = @TaskDetail,
@DW_TK_SCHEDULED = 'Y',
@DW_TK_SCHEDULED_TIME = @REALIZATION_DATE,
@DW_TK_ACTION = @TaskDetail,
@DW_TK_COMPLETED = 0
END
T-SQL Code:
DECLARE @DW_DT_UID AS nvarchar(10)
DECLARE @DW_PR_ADDRESS AS nvarchar(100)
DECLARE @DW_PR_REALIZATION AS decimal
DECLARE @DW_PR_REALIZATION_DATE AS datetime
set @dw_dt_uid = 36106
print @dw_dt_uid
SELECT
@DW_PR_REALIZATION_DATE = DW_PR_REALIZATION_DATE,
@DW_PR_REALIZATION = DW_PR_REALIZATION,
@DW_PR_ADDRESS = DW_PR_ADDRESS1
FROM DW_PROPERTY
WHERE DW_PR_DT_UID = @DW_DT_UID
exec UpdateTask
@DW_TK_UID = -1,
@DW_TK_TT_UID = 29,
@DW_TK_DT_UID = @DW_DT_UID,
@DW_TK_USER_NAME = '',
@DW_TK_DESC = 'Test Task using SP',
@DW_TK_SCHEDULED = 'Y',
@DW_TK_SCHEDULED_TIME = @DW_PR_REALIZATION_DATE,
@DW_TK_ACTION = 'Test Task using SP',
@DW_TK_COMPLETED = 0