title: SQL Server Procedure Call
body: <p>I have this procedure in SQL Server:</p>
  
  <pre><code>create procedure SzineszLista
      (@pSzineszNev varchar(30)
       , @pStudiokSzama int
       , @pAtlagKoltseg int
       , @pVetitesSzam int
       , @pOut int output)
  as
  begin
      set nocount on;
  
      if object_id('tempdb..#tmpMufajLista') is not null 
          drop table #tmpMufajLista
  
      create table #tmpMufajLista(MufajID int)
  
      if object_id('tempdb..#tmpSzineszLista') is not null 
          drop table #tmpSzineszLista
  
      create table #tmpSzineszLista
      ( 
           SzineszID int,
           StudiokSzama int,
           AtlagKoltseg int,
           VetitesSzam int
      )
  
      insert into #tmpMufajLista(MufajID)
          select
              m.MufajID
          from
              Szineszek sz
          inner join 
              szerepel szf on szf.SzineszID = sz.SzineszID
          inner join 
              Filmek f on f.FilmID = szf.FilmID
          inner join 
              MufajID m on m.MufajID = f.MufajID
          where
              sz.SzineszNev = @pSzineszNev
          group by
              m.MufajID
  
      insert into #tmpSzineszLista(SzineszID, StudiokSzama, AtlagKoltseg, VetitesSzam)
          select
              szf.SzineszID, 0, 0, 0
          from
              #tmpMufajLista tmp
          inner join 
              Filmek f on f.MufajID = tmp.MufajID
          inner join 
              Szerepel szf on szf.FilmID = f.FilmID
          group by
              szf.SzineszID
  
      update tmp
      set StudiokSzama = sq.StudioSzam
      from #tmpSzineszLista tmp
      inner join (select szl.SzineszID, count(distinct f.StudioID) StudioSzam
                  from #tmpSzineszLista szl
                  inner join Szerepel szf on szf.SzineszID = szl.SzineszID
                  inner join Filmek f on f.FilmID = szf.FilmID
                  group by szf.SzineszID) sq on sq.SzineszID = tmp.SzineszID
  
      update tmp
      set AtlagKoltseg = sq.SzineszAtlagKoltseg
      from #tmpSzineszLista tmp
      inner join (select szl.SzineszID, avg(f.Koltseg) SzineszAtlagKoltseg
                  from Filmek f
                  cross join #tmpSzineszLista szl
                  left outer join Szerepel szf on szf.FilmID = f.FilmID and szf.SzineszID = szl.SzineszID
                  where szf.FilmID is null
                  group by szl.SzineszID) sq on sq.SzineszID = tmp.SzineszID
  
      update tmp
      set VetitesSzam = sq2.SzineszVetitesSzam
      from #tmpSzineszLista tmp
      inner join (select szl.SzineszID, count(*) SzineszVetitesSzam
                  from
                      (select 
                           szl.SzineszID, f.FilmID,  
                           dense_rank() over (partition by szl.SzineszID, f.FilmID order by f.Koltseg asc) OrderNo
                       from #tmpSzineszLista szl
                       inner join Szerepel szf on szf.SzineszID = szl.SzineszID
                       inner join Filmek f on f.FilmID = szf.FilmID) sq
                  inner join Vetites v on v.FilmID = sq.FilmID
                  where sq.OrderNo = 1
                  group by szl.SzineszID) sq2 on sq2.SzineszID = tmp.SzineszID
  
      if exists(
          select szl.SzineszID
          from #tmpSzineszLista szl
          where
              szl.StudioSzam &lt; @pStudiokSzama
              and szl.AltagKoltseg &lt; @pAtlagKoltseg
              and szl.VetitesSzam &gt; @pVetitesSzam
          )
      begin
          select sz.SzineszID, sz.SzineszNev
          from #tmpSzineszLista szl
              inner join Szineszek sz on sz.SzineszID = szl.SzineszID
          where
              szl.StudioSzam &lt; @pStudiokSzama
              and szl.AltagKoltseg &lt; @pAtlagKoltseg
              and szl.VetitesSzam &gt; @pVetitesSzam
  
          set @pOut = 0
      end else begin
          set @pOut = -2
      end
  end
  </code></pre>
  
  <p>When I run this code, it's ok, but when I call it, it gives me an error message</p>
  
  <pre><code>exec SzineszLista 'Kipp Maeer', 0, 0, 0
  </code></pre>
  
  <p>Error message:</p>
  
  <blockquote>
    <p>Msg 201, Level 16, State 4, Procedure SzineszLista, Line 0 [Batch Start Line 177]<br>
    Procedure or function 'SzineszLista' expects parameter '@pOut', which was not supplied.</p>
  </blockquote>
  
  <p>And if I set a value to @pOut like this:</p>
  
  <pre><code>exec SzineszLista 'Kipp Maeer', 0, 0, 0, 0
  </code></pre>
  
  <p>Then the error message is:</p>
  
  <blockquote>
    <p>Msg 208, Level 16, State 1, Procedure SzineszLista, Line 23 [Batch Start Line 177]<br>
    Invalid object name 'MufajID'.</p>
  </blockquote>