2009-05-25 37 views
4

我编写了一个存储过程如下。它会解析没有错误,但是当我尝试执行它时,它会失败。错误消息为:消息208,级别16,状态6,过程aspnet_updateUser,行23 无效的对象名称'dbo.aspnet_updateUser'。存储过程正确解析但不会执行。无效的对象名称。 Msg 208

这里是存储过程。

USE [PMRS2] 
GO 
/****** Object: StoredProcedure [dbo].[aspnet_updateUser] Script Date: 05/25/2009 15:29:47 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author:  <Author,,Name> 
-- Create date: <Create Date,,> 
-- Description: <Description,,> 
-- ============================================= 
ALTER PROCEDURE [dbo].[aspnet_updateUser] 
    -- Add the parameters for the stored procedure here 
    @UserName nvarchar(50), 
    @Email nvarchar(50), 
    @FName nvarchar(50), 
    @LName nvarchar(50), 
    @ActiveFlag bit, 
    @GroupId int 

AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 

UPDATE dbo.aspnet_Users 
    SET UserName = @UserName, LoweredUserName = LOWER(@UserName), Email = @Email, FName = @FName, LName = @LName, ActiveFlag = @ActiveFlag, GroupId = @GroupId 
    WHERE LoweredUserName = LOWER(@UserName) 
END 

回答

13

看起来它可能还没有存在,将Alter交换为Create。

+1

我是个白痴。感谢那 – Chris 2009-05-25 19:46:05

+1

+1击败其他人;) – gbn 2009-05-25 19:47:02

+2

发生在我们所有人身上! – Martynnw 2009-05-25 19:49:05

0

为了避免这种情况发生,请做我们的工作,绝对不要使用alter proc。相反,我们检查proc是否存在,如果存在则删除它,然后用新代码创建它:

IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'myProc') 
BEGIN 
    DROP Procedure myProc 
END 
GO 

CREATE PROCEDURE myProc 
(add the rest of the proc here) 
相关问题