2023-04-14 10:32:31 +02:00

144 lines
13 KiB
Transact-SQL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

USE [IDB]
GO
-- =============================================
-- Author: DD MS
-- Changed: 28.03.2022
-- =============================================
ALTER PROCEDURE [dbo].[PRIDB_SEARCH_TEXT_GET_RESULTS] (@pUSR_ID as INTEGER,@pSEARCH_TERM as VARCHAR(900),@pDATE_RESTRICTION VARCHAR(500), @pLANG_CODE as VARCHAR(5) = 'de-DE')
AS
BEGIN
DECLARE @SRCH_VAR VARCHAR(900), @DYNSQL_INSERT NVARCHAR(MAX),@DateStr VARCHAR(100)
DECLARE @DATE1 DATE,@DATE2 DATE
IF @pSEARCH_TERM like '%*%'
SET @SRCH_VAR = ' "' + @pSEARCH_TERM + '" '
ELSE
SET @SRCH_VAR = @pSEARCH_TERM
PRINT '@SRCH_VAR [' + @SRCH_VAR + ']'
DELETE FROM TBIDB_SEARCH_RESULT_TERM_USER WHERE USR_ID = @pUSR_ID;
IF LEN(@pDATE_RESTRICTION) > 0
BEGIN
PRINT '@pDATE_RESTRICTION....'
DECLARE @IDX TINYINT, @ATTR_ID VARCHAR(100)
SET @IDX = CHARINDEX('~',@pDATE_RESTRICTION)
PRINT '@IDX: ' + CONVERT(VARCHAR(10),@IDX)
SET @ATTR_ID = LEFT(@pDATE_RESTRICTION,@IDX-1)
PRINT CONVERT(VARCHAR(10),@ATTR_ID)
SET @DateStr = SUBSTRING(@pDATE_RESTRICTION,@IDX + 1,LEN(@pDATE_RESTRICTION)-@IDX)
PRINT @DateStr
END
--###############################################################################
--SUCHE NACH TERM-WERTEN
SET @DYNSQL_INSERT = 'INSERT INTO TBIDB_SEARCH_RESULT_TERM_USER(MD_GUID,USR_ID)
select MD.GUID,' + CONVERT(VARCHAR(10),@pUSR_ID) + char(10) +
'FROM TBIDB_TERM_VALUE_VARCHAR TERM
INNER JOIN TBIDB_LANGUAGE_TERM TLANG ON TLANG.TERM_ID = TERM.GUID
INNER JOIN TBIDB_LANGUAGE LANG ON LANG.GUID = TLANG.LANG_ID
INNER JOIN TBIDB_OBJECT_METADATA MD ON TLANG.OBJECT_ID = MD.GUID
INNER JOIN TBIDB_OBJECT OBJ ON MD.IDB_OBJ_ID = OBJ.IDB_OBJ_ID
WHERE
OBJ.ACTIVE = 1' + char(10)
IF @DateStr = 'DATEPART'
BEGIN
SELECT @DATE1 = DATE_FROM ,@DATE2 = DATE_TILL FROM TBIDB_SEARCH_DATE_VALUE_USER WHERE USR_ID = @pUSR_ID;
SET @DYNSQL_INSERT += 'AND CONVERT(DATE,OBJ.ADDED_WHEN) >= CONVERT(DATE,''' + CONVERT(VARCHAR(10),@DATE1) + ''') AND CONVERT(DATE,OBJ.ADDED_WHEN) <= CONVERT(DATE,''' + CONVERT(VARCHAR(10),@DATE2) + ''')' + char(10)
END
ELSE IF @DateStr = 'ECM_CREATED_TODAY'
SET @DYNSQL_INSERT += 'AND DATEDIFF(DAY,OBJ.ADDED_WHEN,GETDATE()) = 0' + char(10)
ELSE IF @DateStr = 'ECM_CREATED_YESTERDAY'
SET @DYNSQL_INSERT += 'AND DATEDIFF(DAY,OBJ.ADDED_WHEN,GETDATE()) = 1' + char(10)
ELSE IF @DateStr = 'ECM_CREATED_LAST7DAYS'
SET @DYNSQL_INSERT += 'AND DATEDIFF(DAY,OBJ.ADDED_WHEN,GETDATE()) <= 7' + char(10)
ELSE IF @DateStr = 'ECM_YEAR_CURRENT'
SET @DYNSQL_INSERT += 'AND DATEPART(YEAR,OBJ.ADDED_WHEN) = DATEPART(YEAR,GETDATE())' + char(10)
ELSE IF @DateStr = 'ECM_YEAR_LAST'
SET @DYNSQL_INSERT += 'AND DATEPART(YEAR,OBJ.ADDED_WHEN) = DATEPART(YEAR,GETDATE())-1' + char(10)
ELSE IF @DateStr = 'ECM_CREATED_MONTH_CURRENT'
BEGIN
SET @DYNSQL_INSERT += 'AND DATEPART(YEAR,OBJ.ADDED_WHEN) = DATEPART(YEAR,GETDATE())' + char(10)
SET @DYNSQL_INSERT += 'AND DATEPART(MONTH,OBJ.ADDED_WHEN) = DATEPART(MONTH,GETDATE())' + char(10)
END
ELSE IF @DateStr = 'ECM_CREATED_MONTH_LAST'
BEGIN
IF DATEPART(MONTH,GETDATE()) = 1
BEGIN
SET @DYNSQL_INSERT += 'AND DATEPART(YEAR,OBJ.ADDED_WHEN) = DATEPART(YEAR,GETDATE())-1' + char(10)
SET @DYNSQL_INSERT += 'AND DATEPART(MONTH,OBJ.ADDED_WHEN) = 12' + char(10)
END
ELSE
BEGIN
SET @DYNSQL_INSERT += 'AND DATEPART(YEAR,OBJ.ADDED_WHEN) = DATEPART(YEAR,GETDATE())' + char(10)
SET @DYNSQL_INSERT += 'AND DATEPART(MONTH,OBJ.ADDED_WHEN) = DATEPART(MONTH,GETDATE())-1' + char(10)
END
END
IF LEN(@SRCH_VAR) > 0
BEGIN
IF @pSEARCH_TERM like '%*%'
SET @DYNSQL_INSERT += 'AND CONTAINS(TERM.TERM_VALUE,''' + @SRCH_VAR + ''')' + char(10)
ELSE
SET @DYNSQL_INSERT += 'AND TERM.TERM_VALUE = ''' + @SRCH_VAR + '''' + char(10)
END
SET @DYNSQL_INSERT += 'AND LANG.LANG_CODE = ''' + @pLANG_CODE + '''' + char(10)
PRINT @DYNSQL_INSERT
EXEC sp_executesql @DYNSQL_INSERT
--###############################################################################
--SUCHE NACH STRUCTURE/DOCTYPE-WERTEN
DELETE FROM TBIDB_SEARCH_RESULT_STRUCT_TYPE_USER WHERE USR_ID = @pUSR_ID;
SET @DYNSQL_INSERT = 'INSERT INTO TBIDB_SEARCH_RESULT_STRUCT_TYPE_USER(IDB_OBJ_ID,STRUCTURE_ID,USR_ID)
select IDB_OBJ_ID, STRUCTURE_ID, ' + CONVERT(VARCHAR(10),@pUSR_ID) + char(10) +
'FROM VWIDB_DOC_DOCTYPE A' + char(10)
+ CHAR(9) + 'INNER JOIN TBIDB_TERM_VALUE_VARCHAR TERM ON A.TERM_ID = TERM.GUID
WHERE
A.OBJ_ACTIVE = 1' + char(10)
IF @DateStr = 'DATEPART'
BEGIN
SELECT @DATE1 = DATE_FROM ,@DATE2 = DATE_TILL FROM TBIDB_SEARCH_DATE_VALUE_USER WHERE USR_ID = @pUSR_ID;
SET @DYNSQL_INSERT += 'AND CONVERT(DATE,OBJ.ADDED_WHEN) >= CONVERT(DATE,''' + CONVERT(VARCHAR(10),@DATE1) + ''') AND CONVERT(DATE,OBJ.ADDED_WHEN) <= CONVERT(DATE,''' + CONVERT(VARCHAR(10),@DATE2) + ''')' + char(10)
END
ELSE IF @DateStr = 'ECM_CREATED_TODAY'
SET @DYNSQL_INSERT += 'AND DATEDIFF(DAY,OBJ_ADDED_WHEN,GETDATE()) = 0' + char(10)
ELSE IF @DateStr = 'ECM_CREATED_YESTERDAY'
SET @DYNSQL_INSERT += 'AND DATEDIFF(DAY,OBJ_ADDED_WHEN,GETDATE()) = 1' + char(10)
ELSE IF @DateStr = 'ECM_CREATED_LAST7DAYS'
SET @DYNSQL_INSERT += 'AND DATEDIFF(DAY,OBJ_ADDED_WHEN,GETDATE()) <= 7' + char(10)
ELSE IF @DateStr = 'ECM_YEAR_CURRENT'
SET @DYNSQL_INSERT += 'AND DATEPART(YEAR,OBJ_ADDED_WHEN) = DATEPART(YEAR,GETDATE())' + char(10)
ELSE IF @DateStr = 'ECM_YEAR_LAST'
SET @DYNSQL_INSERT += 'AND DATEPART(YEAR,OBJ_ADDED_WHEN) = DATEPART(YEAR,GETDATE())-1' + char(10)
ELSE IF @DateStr = 'ECM_CREATED_MONTH_CURRENT'
BEGIN
SET @DYNSQL_INSERT += 'AND DATEPART(YEAR,OBJ_ADDED_WHEN) = DATEPART(YEAR,GETDATE())' + char(10)
SET @DYNSQL_INSERT += 'AND DATEPART(MONTH,OBJ_ADDED_WHEN) = DATEPART(MONTH,GETDATE())' + char(10)
END
ELSE IF @DateStr = 'ECM_CREATED_MONTH_LAST'
BEGIN
IF DATEPART(MONTH,GETDATE()) = 1
BEGIN
SET @DYNSQL_INSERT += 'AND DATEPART(YEAR,OBJ_ADDED_WHEN) = DATEPART(YEAR,GETDATE())-1' + char(10)
SET @DYNSQL_INSERT += 'AND DATEPART(MONTH,OBJ_ADDED_WHEN) = 12' + char(10)
END
ELSE
BEGIN
SET @DYNSQL_INSERT += 'AND DATEPART(YEAR,OBJ_ADDED_WHEN) = DATEPART(YEAR,GETDATE())' + char(10)
SET @DYNSQL_INSERT += 'AND DATEPART(MONTH,OBJ_ADDED_WHEN) = DATEPART(MONTH,GETDATE())-1' + char(10)
END
END
IF LEN(@SRCH_VAR) > 0
BEGIN
IF @pSEARCH_TERM like '%*%'
SET @DYNSQL_INSERT += 'AND CONTAINS(TERM.TERM_VALUE,''' + @SRCH_VAR + ''')' + char(10)
ELSE
SET @DYNSQL_INSERT += 'AND TERM.TERM_VALUE = ''' + @SRCH_VAR + '''' + char(10)
END
SET @DYNSQL_INSERT += 'AND LANG_CODE = ''' + @pLANG_CODE + '''' + char(10)
PRINT @DYNSQL_INSERT
EXEC sp_executesql @DYNSQL_INSERT
END