Fixed search logic for empty search string. Improves performance.

Fixed logic to restore a deleted step.  If the first step is deleted and restored, the change manager fails.
Fixed numerous queries to give proper values if either the number or the number or the title is null.
Added testing examples to vefn_FixSearchString
This commit is contained in:
Rich 2012-10-31 15:54:52 +00:00
parent 2ae02cce49
commit bbcb9c6935

View File

@ -684,7 +684,9 @@ select 14 ID,'%' ss union
select 15 ID,'_' ss union
select 16 ID,'-' ss union
select 17 ID,'%' ss union
select 18 ID,'C* - *' ss
select 18 ID,'C* - *' ss union
select 19 ID,'' ss union
select 20 ID,null ss
) tt order by ID
*/
/*****************************************************************************
@ -708,7 +710,8 @@ BEGIN
Set @SearchString = replace(@SearchString,'-','\u8209?')
IF(@SearchString like '[%]%') RETURN @SearchString
IF(@SearchString like '%[%]') RETURN @SearchString
RETURN '%' + @SearchString + '%'
Set @SearchString = replace('%' + @SearchString + '%','%%','%')
RETURN @SearchString
END
GO
-- Display the status
@ -748,27 +751,33 @@ CREATE PROCEDURE [dbo].[restoreDeletedItem]
WITH EXECUTE AS OWNER
AS
DECLARE @PreviousID int
declare @oldPreviousID int
DECLARE @NextID int
DECLARE @ContentID int
declare @fromtype int
IF @Level = 0
BEGIN
IF @Level = 0 BEGIN
SET @NextID = @CurrentID
SELECT @PreviousID = PreviousID FROM Items WHERE ItemID = @CurrentID
END
IF @Level = 1
BEGIN
IF @Level = 1 BEGIN
SELECT @NextID = ItemID FROM Items WHERE PreviousID = @CurrentID
SET @PreviousID = @CurrentID
END
SELECT @ContentID = dbo.[ve_GetPartContentID](@ItemID)
select @fromtype = dbo.[ve_GetPartFromType](@ItemID)
if @level = 2
begin
select @oldPreviousID = isnull(PreviousID,0) from tblItems where ItemID = @ItemID
if @level = 2 begin
select @NextID = itemid from parts where contentid = @contentid and fromtype = @fromtype
end
--restore parts from step being restored
UPDATE tblParts SET DeleteStatus = 0 WHERE ItemID IN (SELECT ItemID FROM PartAudits WHERE DeleteStatus = @DeleteID)
--print 'oldpreviousid: ' + cast(@oldpreviousid as varchar(10))
--print 'currentid: ' + cast(@currentid as varchar(10))
--restore of children in different order
if(@oldPreviousID != @CurrentID and @Level = 2) begin
update tblparts set deletestatus = 0, itemid = @itemid where contentid = @contentid and fromtype = @fromtype
--print 'special code'
end
UPDATE tblContents SET DeleteStatus = 0, ActionDTS = getdate() WHERE ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID)
UPDATE tblItems SET DeleteStatus = 0,PreviousID = CASE WHEN ItemID = @ItemID THEN @PreviousID ELSE PreviousID END
WHERE ItemID IN (SELECT ItemID FROM ItemAudits WHERE DeleteStatus = @DeleteID)
@ -777,12 +786,11 @@ update tblparts set deletestatus = 0, itemid = @itemid where contentid = @conten
UPDATE tblAnnotations SET DeleteStatus = 0, ActionDTS = getdate() WHERE deletestatus = @deleteid -- ItemID in (SELECT ItemID FROM ItemAudits WHERE DeleteStatus = @DeleteID)
UPDATE tblROUsages SET DeleteStatus = 0 WHERE deletestatus = @deleteid --ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID)
UPDATE tblTransitions SET DeleteStatus = 0 WHERE deletestatus = @deleteid --FromID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID)
IF @NextID IS NOT NULL
BEGIN
IF @NextID IS NOT NULL BEGIN
UPDATE Items SET PreviousID = @ItemID WHERE ItemID = @NextID
IF @ContentID IS NOT NULL
BEGIN
IF @ContentID IS NOT NULL BEGIN
UPDATE Parts SET ItemID = @ItemID WHERE ItemID = @NextID and ContentID = @ContentID
--print 'old code'
END
END
--else
@ -928,8 +936,8 @@ BEGIN
else '' end
PPath,
Path + case C.Type/10000
when 0 then @Delim +C.Number + @DelimNumber + C.Text
when 1 then @Delim +C.Number + @DelimNumber + C.Text
when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
else
case P.FromType
--when 1 then 'PRC' + @Delim + cast(1 as varchar(3))
@ -962,8 +970,8 @@ BEGIN
else '' end
PPath,
Path + case C.Type/10000
when 0 then @Delim +C.Number + @DelimNumber + C.Text
when 1 then @Delim +C.Number + @DelimNumber + C.Text
when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
else
case P.FromType
--when 1 then 'PRC' + @Delim + cast(1 as varchar(3))
@ -989,8 +997,8 @@ BEGIN
PPath,
--'1' +
PPath + case C.Type/10000
when 0 then @Delim + C.Number + @DelimNumber + C.Text
when 1 then @Delim + C.Number + @DelimNumber + C.Text
when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end +
case when I.deletestatus != 0 then 'Old ' else '' end + cast(Ordinal + 2 as varchar(3))
end Path,
@ -1239,7 +1247,7 @@ with Itemz([ItemID], [DVPath], [Level], [ParentID], [Ordinal], [PreviousID], [Fr
Select [I].[ItemID], DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID]
,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID],
Cast('' as nvarchar(max)) [PPath],
Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + C.Number + @DelimNumber + C.Text else '1' end as nvarchar(max)) [Path],
Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) [Path],
0 IsRNO, Cast('' as nvarchar(max)) [POrdinalPath], Cast('0001' as nvarchar(max)) [OrdinalPath], UnitPrefix
FROM [Items] I
Join Contents C on C.ContentID=I.ContentID
@ -1259,8 +1267,8 @@ Union All
else '' end
PPath,
Path + case C.Type/10000
when 0 then @Delim + UnitPrefix + C.Number + @DelimNumber + C.Text -- Procedure
when 1 then @Delim + C.Number + @DelimNumber + C.Text -- Section
when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Procedure
when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Section
else
case P.FromType
--when 1 then 'PRC' + @Delim + cast(1 as varchar(3))
@ -1285,8 +1293,8 @@ Union All
PPath,
--'1' +
PPath + case C.Type/10000
when 0 then @Delim + UnitPrefix + C.Number + @DelimNumber + C.Text -- Procedure
when 1 then @Delim + C.Number + @DelimNumber + C.Text -- Section
when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Procedure
when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Section
else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3))
end Path, 0,
POrdinalPath,
@ -1389,7 +1397,7 @@ with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [From
Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged]
,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged],
Cast('' as nvarchar(max)) PPath,
Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + C.Number + @DelimNumber + C.Text else '1' end as nvarchar(max)) Path,
Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path,
0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix
FROM [Items] I
Join Contents C on C.ContentID=I.ContentID
@ -1409,8 +1417,8 @@ Union All
else '' end
PPath,
Path + case C.Type/10000
when 0 then @Delim + UnitPrefix + C.Number + @DelimNumber + C.Text
when 1 then @Delim + C.Number + @DelimNumber + C.Text
when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
else
case P.FromType
--when 1 then 'PRC' + @Delim + cast(1 as varchar(3))
@ -1435,8 +1443,8 @@ Union All
,PPath,
--'1' +
PPath + case C.Type/10000
when 0 then @Delim + UnitPrefix + C.Number + @DelimNumber + C.Text
when 1 then @Delim + C.Number + @DelimNumber + C.Text
when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3))
end Path, 0,
POrdinalPath,
@ -1531,7 +1539,7 @@ with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [From
Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged]
,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged],
Cast('' as nvarchar(max)) PPath,
Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + C.Number + @DelimNumber + C.Text else '1' end as nvarchar(max)) Path,
Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path,
0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix
FROM [Items] I
Join Contents C on C.ContentID=I.ContentID
@ -1551,8 +1559,8 @@ Union All
else '' end
PPath,
Path + case C.Type/10000
when 0 then @Delim + UnitPrefix + C.Number + @DelimNumber + C.Text
when 1 then @Delim + C.Number + @DelimNumber + C.Text
when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
else
case P.FromType
--when 1 then 'PRC' + @Delim + cast(1 as varchar(3))
@ -1577,8 +1585,8 @@ Union All
,PPath,
--'1' +
PPath + case C.Type/10000
when 0 then @Delim + UnitPrefix + C.Number + @DelimNumber + C.Text
when 1 then @Delim + C.Number + @DelimNumber + C.Text
when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3))
end Path, 0,
POrdinalPath,
@ -1773,7 +1781,7 @@ with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [From
Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged]
,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged],
Cast('' as nvarchar(max)) PPath,
Cast(Case when C.Type < 20000 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text else '1' end as nvarchar(max)) Path,
Cast(Case when C.Type < 20000 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path,
0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, null
FROM [Items] I
@ -1795,8 +1803,8 @@ Union All
PPath,
--Path + case when Z.FromType < 3 then @Delim else @DelimStep end + case C.Type/10000
Path + case C.Type/10000
when 0 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text
when 1 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text
when 0 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
when 1 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
else
case P.FromType
--when 1 then 'PRC' + @Delim + cast(1 as varchar(3))
@ -1822,8 +1830,8 @@ Union All
,PPath,
--'1' +
PPath + case C.Type/10000
when 0 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text
when 1 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text
when 0 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
when 1 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3))
end Path, 0,
POrdinalPath,
@ -1959,7 +1967,7 @@ with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [From
Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged]
,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged],
Cast('' as nvarchar(max)) PPath,
Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + C.Number + @DelimNumber + C.Text else '1' end as nvarchar(max)) Path,
Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path,
0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix
FROM [Items] I
@ -1981,8 +1989,8 @@ Union All
PPath,
--Path + case when Z.FromType < 3 then @Delim else @DelimStep end + case C.Type/10000
Path + case C.Type/10000
when 0 then @Delim + UnitPrefix + C.Number + @DelimNumber + C.Text
when 1 then @Delim + C.Number + @DelimNumber + C.Text
when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
else
case P.FromType
--when 1 then 'PRC' + @Delim + cast(1 as varchar(3))
@ -2007,8 +2015,8 @@ Union All
,PPath,
--'1' +
PPath + case C.Type/10000
when 0 then @Delim + UnitPrefix + C.Number + @DelimNumber + C.Text
when 1 then @Delim + C.Number + @DelimNumber + C.Text
when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3))
end Path, 0,
POrdinalPath,
@ -2311,7 +2319,7 @@ with Itemz([ItemID], [DVPath], [Level], [ParentID], [Ordinal], [PreviousID], [Fr
Select [I].[ItemID], '' DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID]
,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID],
Cast('' as nvarchar(max)) [PPath],
Cast(Case when C.Type < 20000 then @Delim + C.Number + @DelimNumber + C.Text else '1' end as nvarchar(max)) [Path],
Cast(Case when C.Type < 20000 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) [Path],
0 IsRNO, Cast('' as nvarchar(max)) [POrdinalPath], Cast('0001' as nvarchar(max)) [OrdinalPath]
FROM [Items] I
Join Contents C on C.ContentID=I.ContentID
@ -2330,8 +2338,8 @@ Union All
else '' end
PPath,
Path + case C.Type/10000
when 0 then @Delim +C.Number + @DelimNumber + C.Text
when 1 then @Delim +C.Number + @DelimNumber + C.Text
when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
else
case P.FromType
--when 1 then 'PRC' + @Delim + cast(1 as varchar(3))
@ -2356,9 +2364,9 @@ Union All
PPath,
--'1' +
PPath + case C.Type/10000
when 0 then @Delim + C.Number + @DelimNumber + C.Text
when 1 then @Delim + C.Number + @DelimNumber + C.Text
else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3))
when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'')
else case when .dbo.vefn_GetLastDelim(Path) = '.' THEN @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3))
end Path, 0,
POrdinalPath,
POrdinalPath + right('00000' + cast(Z.[Ordinal] + 2 as varchar(5)), 5)
@ -2382,6 +2390,7 @@ IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingAndChildrenItemsByPr
ELSE PRINT 'TableFunction Creation: vefn_SiblingAndChildrenItemsByProc Error on Creation'
GO
/****** Object: StoredProcedure [vefn_RemoveRange] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_RemoveRange]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1)
DROP FUNCTION [vefn_RemoveRange];
@ -2432,4 +2441,255 @@ GO
-- Display the status of Proc creation
IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_RemoveRange Succeeded'
ELSE PRINT 'ScalarFunction Creation: vefn_RemoveRange Error on Creation'
GO
GO
/****** Object: StoredProcedure [ve_GetPath] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetPath]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1)
DROP FUNCTION [ve_GetPath];
GO
/*
select ItemID, CC.Type, dbo.ve_GetPath(ItemID)
from Items II join Contents CC on II.ContentID = CC.ContentID
where ItemID in(111,265,266,267)
*/
-- drop function ve_GetPath
/*****************************************************************************
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
*****************************************************************************/
CREATE FUNCTION [dbo].[ve_GetPath] (@ItemID int) RETURNS varchar(max)
WITH EXECUTE AS OWNER
AS
BEGIN
-- declare @STructID int
--set @StructID=11
declare @Path varchar(max);
with Itemz(ItemCount,ItemID,PreviousID,FromType,CType,Number,Text,PPath, Path) as (
Select 1,ItemID,PreviousID,0,C.Type/10000,C.Number,C.Text,
Cast(Case when C.Type < 20000 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') else '' end as nvarchar(max)) PPath,
Cast(Case when C.Type < 20000 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path
from Items I
join Contents C on I.ContentID = C.ContentID
where ItemID=@ItemID
Union All
-- siblings
Select ItemCount+1,I.PreviousID,II.PreviousID,0,C.Type/10000,Z.Number,Z.Text,PPath,cast(ItemCount + 1 as nvarchar(3)) + PPath
from Items I
join Contents C on I.ContentID = C.ContentID
Join Items II on II.ItemID = I.PreviousID
Join Itemz Z on I.ItemID=Z.ItemID
where I.PreviousID != 0
Union All
-- children
select 1,I.ItemID,I.PreviousID,P.FromType,C.Type/10000,C.Number,C.Text,
case C.Type/10000
when 0 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'')
when 1 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') +'`' + cast(ItemCount + 0 as varchar(3))
else
case P.FromType
when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(3))
when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(3))
when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(3))
when 4 then '`Note`' + cast(ItemCount + 0 as varchar(3))
when 5 then '`RNO`'
when 7 then '`Table`'
else '`' + cast(ItemCount + 0 as varchar(3))
end end + PPath PPath,
--'1' +
case C.Type/10000
when 0 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'')
when 1 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') +'`' + cast(ItemCount + 0 as varchar(3))
else
case P.FromType
when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(3))
when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(3))
when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(3))
when 4 then '`Note`' + cast(ItemCount + 0 as varchar(3))
when 5 then '`RNO'
when 7 then '`Table'
else '`' + cast(ItemCount + 0 as varchar(3))
end end + PPath Path
from Parts P
join Items I on I.ContentID = P.ContentID
join Contents C on I.ContentID = C.ContentID
join Itemz Z on P.ItemID=Z.ItemID
)
select @Path = path From Itemz where ItemCount=1 and CType=0
OPTION (MAXRECURSION 10000)
return @Path
END;
GO
-- Display the status of Proc creation
IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetPath Succeeded'
ELSE PRINT 'ScalarFunction Creation: ve_GetPath Error on Creation'
GO
/****** Object: StoredProcedure [vefn_ProcedureByProcID] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ProcedureByProcID]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1)
DROP FUNCTION [vefn_ProcedureByProcID];
GO
/****** Object: UserDefinedFunction [dbo].[vefn_ProcedureByProcID] Script Date: 05/18/2011 11:20:48 ******/
/*****************************************************************************
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
*****************************************************************************/
create FUNCTION [dbo].[vefn_ProcedureByProcID](@ProcID int)
RETURNS @SiblingAndChildren TABLE
(
[ItemID] int PRIMARY KEY
, [DVPath] nvarchar(max)
, [Path] nvarchar(max)
, [Level] int
, [FromType] int
, [Ordinal] int
, [ParentID] int
, [PreviousID] int
, [ContentID] int
, [DTS] datetime
, [UserID] nvarchar(100)
, [pContentID] int
, [pDTS] datetime
, [pUserID] nvarchar(100)
, [IsRNO] int
-- , [PPath] nvarchar(max)
-- , [POrdinalPath] nvarchar(max)
, [OrdinalPath] nvarchar(max)
)
WITH EXECUTE AS OWNER
AS
BEGIN
Declare @Delim char(1)
Set @Delim=char(7)
Declare @DelimNumber char(1)
Set @DelimNumber=char(17)
Declare @DelimStep char(1)
Set @DelimStep='.'
BEGIN
insert into @SiblingAndChildren
Select
[I].[ItemID]
, '' DVPath
, Cast(Case when C.Type < 20000 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) [Path]
,0 [Level]
,0 [FromType]
, 0 [Ordinal]
, 0 [ParentID]
, [PreviousID]
,[I].[ContentID]
,[I].[DTS]
,[I].[UserID]
,0 [pContentID]
,[I].[DTS] [pDTS]
, [I].[UserID] [pUserID]
,0 IsRNO
, Cast('0001' as nvarchar(max)) [OrdinalPath]
FROM [Items] I
Join Contents C on C.ContentID=I.ContentID
WHERE I.[ItemID] = @ProcID
END
RETURN
END
GO
-- Display the status of Proc creation
IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ProcedureByProcID Succeeded'
ELSE PRINT 'TableFunction Creation: vefn_ProcedureByProcID Error on Creation'
GO
/****** Object: StoredProcedure [vefn_FindText] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindText]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1)
DROP FUNCTION [vefn_FindText];
GO
/*
SELECT * From vefn_FindText('1','turbine-driven',0,0,0,1,'')
SELECT * From vefn_FindText('1','turbine\u8209?driven',0,0,0,0,'')
SELECT * From vefn_FindText('1','trip',0,0,0,0,'')
select * from vefn_FindText('1','',0,0,0,1,'20010,20008')
select * from vefn_FindText('1',null,0,0,0,1,'20010,20008')
select * from vefn_FindText('1',' ',0,0,0,1,'20010,20008')
*/
/*****************************************************************************
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
*****************************************************************************/
CREATE FUNCTION [dbo].[vefn_FindText](
@DocVersionList nvarchar(MAX)
,@SearchString varchar(MAX)
,@CaseSensitive as int
,@IncludeLinks as int
,@IncludeRtfFormatting as int
,@IncludeSpecialCharacters as int
,@StepTypeList varchar(MAX))
RETURNS @FoundContents TABLE
(
ContentID int PRIMARY KEY
)
WITH EXECUTE AS OWNER
AS
BEGIN
Set @SearchString = .dbo.vefn_FixSearchString(@SearchString)
IF isnull(@SearchString,'%')='%'
BEGIN
insert into @FoundContents
select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C
where(isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000)
or (dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,',')))
END
ELSE
BEGIN
Declare @SearchStringx nvarchar(200) --kbr
set @SearchStringx = replace(@SearchString,'-','\u8209?') --kbr
IF @CaseSensitive = 0 -- Not Case Sensitive
BEGIN
insert into @FoundContents
select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchStringx) C
where
(.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchStringx Collate SQL_Latin1_General_CP1_CI_AS)
AND ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000)
or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,',')))))
UNION
select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C
join Entries E on C.ContentID = E.ContentID
join Documents D on E.DocID = D.DocID
where
(D.DocAscii like @SearchString Collate SQL_Latin1_General_CP1_CI_AS)
AND
((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000)
or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,',')))))
END
ELSE
BEGIN
IF @CaseSensitive = 1 -- Case Sensitive
BEGIN
insert into @FoundContents
select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchStringx) C
where
(.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchStringx Collate SQL_Latin1_General_CP1_CS_AS)
AND ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000)
or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,',')))))
UNION
select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C
join Entries E on C.ContentID = E.ContentID
join Documents D on E.DocID = D.DocID
where
(D.DocAscii like @SearchString Collate SQL_Latin1_General_CP1_CS_AS)
AND
((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000)
or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,',')))))
END
END
END
RETURN
END
GO
-- Display the status of Proc creation
IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindText Succeeded'
ELSE PRINT 'TableFunction Creation: vefn_FindText Error on Creation'
GO