Jag har två SP:s, den ena anropar den andra. Tanken är att den första skall få en wheresats som skall användas i den andra SP:n.
SP1:
CREATE PROCEDURE [dbo].[getAggregateLineValue]
@intDiagramID int,
@intLineID int
AS
declare @WhereStatement as varchar
exec @WhereStatement = getAggregateLineWhereStatement @intDiagramID, @intLineID
exec('select count(*) from p5714_data2 where ' + @WhereStatement )
SP2:
CREATE PROCEDURE [dbo].[getAggregateLineWhereStatement]
@intDiagramID int,
@intLineID int
AS
select sqlexpression from p5714_aggregate_diagram_v where diagramid=@intDiagramID and lineid=@intLineID
Detta fungerar inte då den tycker att @WhereStatement är 0 när den skall användas.
innebär att du tilldelar returvärdet från proceduren, eftersom du inte har någon return så blir det 0. Du kan inte få värdet av en select i en procedur till en variabel i en annan procedur. Skriv en funktion i stället
create function X(...)
returns varchar(...)
return (select ... )
Nästa problem blir att jag vill ha en kontroll på att funktionen verkligen hittade något, om inte så skall den returnera -1:
create function dbo.getAggregateLineWhereStatement( @intDiagramID int, @intLineID int )
returns varchar(250)
begin
if exists ( select sqlexpression from p5714_aggregate_diagram_v where diagramid=@intDiagramID and lineid=@intLineID )
return( select sqlexpression from p5714_aggregate_diagram_v where diagramid=@intDiagramID and lineid=@intLineID )
else
return( '-1' )
Detta ger fel på sista raden att "incorrect syntax near ')'"
Mvh, Vide
266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849