Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#1

Skalarvariable muss deklariert werden

  Alt 30. Mär 2009, 12:10
Datenbank: MS SQL-Server • Version: 2005 • Zugriff über: ADO
Hallo,
ich habe ein Problem in einer Stored-Procedure.
Ich möchte gerne innerhalb der Stored-Procedure Zwischenergebnisse in einer Tabellenvariablen speichern.
Grundsätzlich funktioniert das auch ganz gut. Nur kann ich nicht immer wie gewohnt auf die Variable zugreiffen.
 WHERE (hyp_planning.HSP_OBJECT.OBJECT_NAME =@tpe_upl_references.position) and An dieser Stelle verursacht folgende Fehlermeldung:
Code:
Meldung 137, Ebene 15, Status 2, Prozedur ListTree3, Zeile 43
Die "@tpe_upl_references"-Skalarvariable muss deklariert werden.
Wie kann ich das Problem lösen?

Hier die komplette Stored-Procedure
SQL-Code:
CREATE Procedure [dbo].[ListTree3] @NODETEXT VARCHAR(80)
as
begin
set nocount on
declare @ChildID int

declare @tpe_upl_references Table
(
  ID INT,
  PARENTID INT,
  POSITION VARCHAR(80) COLLATE SQL_Latin1_General_CP1_CI_AS,
  ALIAS VARCHAR(80) COLLATE SQL_Latin1_General_CP1_CI_AS,
  HASCHILDREN INT,
  GENERATION INT,
  RELPOSITION INT
)
-- 1.Zeile in die Tabelle
--
insert into @tpe_upl_references
  select object_ID, Parent_ID, object_name,null as alias, has_children, Generation,Position from hyp_planning.hsp_object
    where (object_name = @NODETEXT) and ((object_type=32) or (object_type=33) or (object_type=2)or (object_type=50))

Declare c Cursor local for select ID from @tpe_upl_references
open c
fetch next from c into @ChildID
while @@Fetch_status = 0 begin
--
-- Mit jedem Schleifendurchlauf werden in einem Abwasch ALLE Kindknoten eingefügt
--
  insert into @tpe_upl_references
    select object_ID,Parent_ID,object_name,null as alias,has_children, Generation,Position from hyp_planning.hsp_object where Parent_ID = @ChildID
  fetch next from c into @ChildID
end
close c
deallocate c


update @tpe_upl_references set alias= (SELECT HSP_OBJECT_1.OBJECT_NAME AS ALIAS
                          FROM hyp_planning.HSP_OBJECT AS HSP_OBJECT_1 INNER JOIN
                                 hyp_planning.HSP_ALIAS ON HSP_OBJECT_1.OBJECT_ID = hyp_planning.HSP_ALIAS.ALIAS_ID RIGHT OUTER JOIN
                                 hyp_planning.HSP_OBJECT ON hyp_planning.HSP_ALIAS.MEMBER_ID = hyp_planning.HSP_OBJECT.OBJECT_ID
                          WHERE (hyp_planning.HSP_OBJECT.OBJECT_NAME =@tpe_upl_references.position) and (hyp_planning.HSP_ALIAS.ALIASTBL_ID=14) )

set nocount off
select * from @tpe_upl_references order by id,relposition


END
Ohne das Update funktioniert die Stored-Procedure mit der Tabellenvariablen einwandfrei. Wenn ich anstatt der Tabellenvariablen das Zwischenergebnis in die tempdb schreibe funktioniert es auch mit dem update tadellos.
I come from outer space to save the human race
  Mit Zitat antworten Zitat