Это грубо, но оно делает то, что вам нужно.Если его отбросить, например, часть какого-либо импорта, он может быть достаточно хорош для ваших нужд.
Я уверен, что этот подход может быть улучшен с более глубоким пониманием того, как получать детали текущего выполнения SQL
изнутриPROC
, я быстро взглянул на использование query plans
и т. д.
Вы можете просто вернуться к этой проверке, если время полночь , это делает его более эффективным
ALTER PROCEDURE Hastime(@d AS DATETIME)
AS
BEGIN
-- Is there a easier way to get from DBCC INPUTBUFFER to a SQL variable?
CREATE TABLE #temp
(
spid INT,
eventtype NVARCHAR(30),
parameters INT,
eventinfo NVARCHAR(4000)
)
INSERT INTO #temp
(eventtype,
parameters,
eventinfo)
EXEC ('DBCC INPUTBUFFER(' + @@spid +') WITH NO_INFOMSGS')
-- Yes, we could do this better
IF EXISTS (SELECT *
FROM #temp
WHERE eventinfo LIKE '%:%')
SELECT 'Time'
ELSE
SELECT 'No Time'
END
go
EXEC dbo.Hastime
'2000/06/01'
go
EXEC dbo.Hastime
'2000/06/01 00:00:00'