2010-06-23 14 views
4

Je reçois l'erreur suivanteUn nom d'objet ou de colonne est manquant ou vide

Un nom d'objet ou de colonne est manquant ou vide. Pour les instructions SELECT INTO, vérifiez que chaque colonne a un nom. Pour les autres instructions, recherchez les noms d'alias vides. Les alias définis comme "" ou [] ne sont pas autorisés. Ajoutez un nom ou un espace unique comme nom d'alias.

pour le spectacle de requête ci-dessous:

CREATE   PROC [dbo].[Sp_Table1] @ctlg_ipt_event_id int 
AS 
SET NOCOUNT ON 

DECLARE @current_status NCHAR(1), @ready_status_code NCHAR(1) 
DECLARE @current_action NCHAR(1), @ready_action_code NCHAR(1), @done_action_code NCHAR(1) 
DECLARE @pst_user_id int 


SELECT @current_status = status_code 
     ,@current_action = action_code 
     ,@pst_user_id = last_mod_user_id 
    FROM merch_ctlg_ipt_event 
WHERE ctlg_ipt_event_id = @ctlg_ipt_event_id 

Select @ready_status_code = 'o' 
, @ready_action_code = 'a' 
, @done_action_code = 'b' 

IF @current_status <> @ready_status_code OR @current_action <> @ready_action_code 
BEGIN 
RETURN 
END 


BEGIN TRAN 

declare @rows int 
    ,@err int 
    ,@i int 
    ,@name nvarchar(50) --COLLATE SQL_AltDiction_Pref_CP850_CI_AS 
      ,@resolved_View_Name_category_id int 
      ,@xref_value int 
      ,@availability_start_date datetime 
      ,@availability_end_date datetime 
      ,@status_code int 
      ,@last_mod_user_id int 
      ,@CT datetime 
      ,@supplier_id int 
      ,@View_Name_id int 
    select @i = 1 
     ,@CT = current_timestamp 

Select Distinct mc.name, 
    mc.resolved_View_Name_category_id, 
    mc.xref_value, 
    mc.availability_start_date, 
    mc.availability_end_date, 
    mc.status_code, 
    CASE WHEN mc.last_mod_user_id = 42 
     THEN @pst_user_id 
     ELSE mc.last_mod_user_id 
     END as last_mod_user_id, 
    CURRENT_tsp 
    ,IDENTITY(int,1,1) as rn 
    ,si.supplier_id 
    ,si.View_Name_id 
into #temp 
FROM View_Name AS si 
JOIN merch_ctlg_ipt_View_Name AS mc 
    ON mc.supplier_id = si.supplier_id 
    AND mc.resolved_View_Name_id = si.View_Name_id 
    AND mc.cat_imp_event_id = @ctlg_ipt_event_id 
    AND mc.accept_flag = 'y' 
WHERE si.shipper_flag = 'n' 
select @[email protected]@ROWCOUNT,@[email protected]@error 
if @rows > 0 and @err=0 
Begin 

    While @i <[email protected] 
     begin 
      SElect @name = name, 
        @resolved_View_Name_category_id = resolved_View_Name_category_id, 
        @xref_value = xref_value, 
        @availability_start_date = availability_start_date, 
        @availability_end_date = availability_end_date, 
        @status_code = mc.status_code, 
        @last_mod_user_id =last_mod_user_id , 
        ,@[email protected]+1 
        ,@supplier_id=supplier_id 
        ,@View_Name_id=View_Name_id 
       from #temp 
      Where [email protected] 
      UPDATE View_Name 
       SET name = @name, 
        View_Name_category_id = @resolved_View_Name_category_id, 
        xref_value = @xref_value, 
        availability_start_date = @availability_start_date, 
        availability_end_date = @availability_end_date, 
        status_code = @status_code, 
        last_mod_user_id = @last_mod_user_id , 
        last_mod_timestamp = @CT 
      Where @sup_id = supplier_id 
       AND @View_Name_id = View_Name_id 
       AND shipper_flag = 'n' 
      IF @@ERROR > 0 
      BEGIN 
       ROLLBACK TRAN 
       RETURN 
       END 
      End 
End 


UPDATE 
merch_ctlg_ipt_event 
SET action_code = @done_action_code, 
    last_mod_timestamp = @CT 
WHERE ctlg_ipt_event_id = @ctlg_ipt_event_id 

IF @@ERROR > 0 
BEGIN 
ROLLBACK TRAN 
RETURN 
END 


COMMIT TRAN 
Return 
go 

Pourriez-vous s'il vous plaît aider?

+0

Impossible de dire, sans connaître les structures de toutes les tables et vues référencées dans la requête. Regardez-les tous et voyez si l'une des références de colonnes dans la requête est manquante. – Oded

+1

+1 Simplement pour 'IDENTITY (int, 1,1)' Je n'avais jamais vu ça auparavant. –

Répondre

5

Vous avez 2 virgules dans une rangée ici

@last_mod_user_id =last_mod_user_id , 
        ,@[email protected]+1 

probablement pas non plus pertinent pour le message d'erreur, mais vous avez une ligne

  Where @sup_id = supplier_id 

mais la variable déclarée est @supplier_id

Questions connexes