存储过程正确解析,但不会执行。无效的对象名称。讯息208

问题描述 投票:4回答:3

我已经编写了如下存储过程的脚本。它将解析没有错误,但是当我尝试执行它时,它将失败。错误消息显示为:消息208,级别16,状态6,过程aspnet_updateUser,第23行无效的对象名称'dbo.aspnet_updateUser'。

这里是存储过程。

    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
sql database stored-procedures
3个回答
13
投票

看起来好像还不存在,将Alter替换为Create。


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)

0
投票

这里是另一种解决方案

USE [PMRS2]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID ( 'dbo.YourProcedureName', 'P' ) IS NOT NULL   
    DROP PROCEDURE dbo.YourProcedureName;  
GO

CREATE PROCEDURE [dbo].[YourProcedureName] (
    @UserName varchar(50),
    @Password varchar(50))
AS
BEGIN
SET NOCOUNT ON;

    select ... (your query)
END
© www.soinside.com 2019 - 2024. All rights reserved.