Hallo Manfred!
erstmal danke für die Antwort. Da das ganze etwas länglich ist wollte ich erst die Stored Procedure nicht posten, aber was solls. Du findest sie am Ende meiner Antwort.
if (@lang = ‚deu‘)
begin
if (@resp + @coop + @info = ‚‘)
–select mit where xmlSearch like @contains else
–select wie vor und … or (xmlSearch like @resp …)
end
if (@lang = ‚eng‘)end
if (@resp + @coop + @info = ‚‘)
–select mit where xmlSearch_eng like @contains else
–select wie vor und … or (xmlSearch_eng like @resp …)
end
Es werden also zwei Aussagen abgefragt: Sprache (könnten auch mal mehr werden …) und die Parameter, die speziellle „Suchtexte“ beinhalten. DIe SP funzt wie unten angegeben. Allerings bei „n“ Sprachen macht es keinen Spass das zu pflegen.
Im ersten Abschnitt verwende ich „xmlSearch“. Den könnte ich mir auch gut als „xmlSearch_deu“ vorstellen. (Hätte man direkt machen sollen). Dann könnte man die Spalte aus „xmlSearch_“ + l bilden. Aber dann?
mfg
Dirk
CREATE PROCEDURE listActivitiesCS
@contains nvarchar(200),
@resp nvarchar(200),
@coop nvarchar(200),
@info nvarchar(200),
@lang nvarchar(200)
AS
set @contains = ‚%‘ + upper(@contains) +’%’
if (@resp ‚‘)
set @resp = ‚%‘ + @resp +’%’
if (@coop ‚‘)
set @coop = ‚%‘ + @coop +’%’
if (@info ‚‘)
set @info = ‚%‘ + @info +’%’
set @contains = ‚%‘ + upper(@contains) +’%’
if (@resp ‚‘)
set @resp = ‚%‘ + @resp +’%’
if (@coop ‚‘)
set @coop = ‚%‘ + @coop +’%’
if (@info ‚‘)
set @info = ‚%‘ + @info +’%’
if (@lang = ‚deu‘)
begin
if (@resp + @coop + @info = ‚‘)
select c.xmlStream as xmlStream, c.id as id, c.orderNumber as actOrder, titel as titel, d.treeOrder as procOrder, d.id as chapterId from Processes as d
right outer join
(
select b.xmlStream, b.id, a.orderNumber, processId from activitiesToProcesses as a
right outer join actcache as b
on b.Id = a.activityId
where xmlSearch like @contains or xmlSearch_eng like @contains
) as c
on c.processId = d.Id
where isnull(d.treeOrder,-1) -1
order by procOrder, actOrder
else
–das ist der Unterschied zu oben!
select c.xmlStream as xmlStream, c.id as id, c.orderNumber as actOrder, titel as titel, d.treeOrder as procOrder, d.id as chapterId from Processes as d
right outer join
(
select b.xmlStream, b.id, a.orderNumber, processId from activitiesToProcesses as a
right outer join actcache as b
on b.Id = a.activityId
where (xmlSearch like @contains or xmlSearch_eng like @contains)and (xmlSearch like @resp or xmlSearch like @coop or xmlSearch like @info)
) as c
on c.processId = d.Id
where isnull(d.treeOrder,-1) -1
order by procOrder, actOrder
end
if (@lang = ‚eng‘)
begin
if (@resp + @coop + @info = ‚‘)
select c.xmlStream_eng as xmlStream, c.id as id, c.orderNumber as actOrder, titel_eng as titel, d.treeOrder as procOrder from Processes as d
right outer join
(
select b.xmlStream_eng, b.id, a.orderNumber, processId from activitiesToProcesses as a
right outer join actcache as b
on b.Id = a.activityId
where xmlSearch like @contains or xmlSearch_eng like @contains
) as c
on c.processId = d.Id
where isnull(d.treeOrder,-1) -1
order by procOrder, actOrder
else
–das ist der Unterschied zu oben!
select c.xmlStream_eng as xmlStream, c.id as id, c.orderNumber as actOrder, titel_eng as titel, d.treeOrder as procOrder from Processes as d
right outer join
(
select b.xmlStream_eng, b.id, a.orderNumber, processId from activitiesToProcesses as a
right outer join actcache as b
on b.Id = a.activityId
where (xmlSearch like @contains or xmlSearch_eng like @contains)and (xmlSearch like @resp or xmlSearch like @coop or xmlSearch like @info)
) as c
on c.processId = d.Id
where isnull(d.treeOrder,-1) -1
order by procOrder, actOrder
end
GO