【问题标题】:Stored procedure for Delete record删除记录的存储过程
【发布时间】:2019-08-21 02:37:40
【问题描述】:

我创建了 3 个用于插入、更新和删除记录的存储过程。

虽然插入和更新记录存储过程工作正常,但我无法通过删除存储过程删除记录。

该存储过程中的代码在这里:

CREATE PROCEDURE usp_DeleteEmployeeRcord
    (@Name NVarchar(50),
     @FName Nvarchar(50),
     @Address NVarchar (50),
     @Email Nvarchar(50),
     @Mobile NVarchar(50),
     @Pincode NVarchar(50))
AS 
BEGIN
    DELETE [dbo].[EmployeeDetails]  
    WHERE Pincode = @Pincode
END

【问题讨论】:

  • 告诉我们您遇到了什么错误,或者它是否简单地失败而没有错误?

标签: sql-server


【解决方案1】:

您忘记了语句中的 FROM 子句,它是

DELETE FROM dbo.EmployeeDetails WHERE ....

【讨论】:

    【解决方案2】:

    因为您的DELETE 语句不正确。正确的语法是

    DELETE FROM <TableName> Where <Condition>
    

    所以把你的查询改成这个然后试试

    DELETE FROM [dbo].[EmployeeDetails] Where Pincode = @Pincode
    

    【讨论】:

    • 如果您启动此过程然后在执行过程中中途取消它,表会发生什么情况?取消之前删除的任何行会保持删除状态,还是服务器会回滚然后删除?
    【解决方案3】:

    您必须将未在过程中传递的变量设为可选:

    使用这个修改:

    CREATE PROCEDURE usp_DeleteEmployeeRcord
    (
     @Name NVarchar(50)='',
     @FName Nvarchar(50)='', 
     @Address NVarchar (50)='', 
     @Email Nvarchar(50)='', 
     @Mobile NVarchar(50)='', 
     @Pincode NVArchar(50)
    )
    
    AS 
            BEGIN
                DELETE [dbo].[EmployeeDetails]  
                Where Pincode = @Pincode
            END
    

    希望对您有所帮助。 :)

    【讨论】:

    • 您的代码会出现语法错误。请仅在自己测试后发布您的代码。
    • 你遇到的错误是什么,能告诉我吗?
    • 您可能会收到对象 usp_DeleteEmployeeRcord 已存在的错误,因此您只需删除前一个或更改过程,随心所欲。
    • 是的,对于 MS SQL Server 'FROM' 在 DELETE 语句中是可选的。 :) 试试
    【解决方案4】:

    删除记录的存储过程 - 图书详情示例如下:

        Create procedure[dbo].[DeleteBookDetails_SP] 
             @BookId Int
        As
        Begin   
    
             Delete from BookDetails Where BookId=@BookId
    
        End
    

    这里“DeleteBookDetails_SP”是存储过程名称,“BookDetails”是表名,“BookId”是表中的列名。

    【讨论】:

    • Create 语句必须是 Create procedure[dbo].[DeleteBookDetails_SP](@BookId Int) 而不是 Create procedure[dbo].[DeleteBookDetails_SP] @BookId Int
    【解决方案5】:
    Use test
    go
    
    CREATE TABLE employee(  
    id INTEGER NOT NULL PRIMARY KEY,  
    first_name VARCHAR(10),  
    last_name VARCHAR(10),  
    salary DECIMAL(10,2),  
    city VARCHAR(20), 
    )  
    
    
    INSERT INTO employee VALUES (2, 'Monu', 'Rathor',4789,'Agra');  
    GO  
    
    INSERT INTO employee VALUES (4, 'Rahul' , 'Saxena', 5567,'London');  
    GO  
    
    INSERT INTO employee VALUES (5, 'prabhat', 'kumar', 4467,'Bombay'); 
    go  
    
    INSERT INTO employee VALUES (6, 'ramu', 'kksingh', 3456, 'jk');  
    go  
    
    select * from employee 
    
    
    Create procedure MasterInsertUpdateDelete
    (
    @ID integer,  --//Mandatory parameters
    @Firstname varchar(50)=Null,  --//optional parameters//--
    @Lastname varchar(50)=Null,
    @Salary Decimal(10, 2)=Null,
    @City varchar(20)=Null,
    @Statementtype nvarchar(200) = '' 
    )
    as
    Begin
    
        if @Statementtype = 'Insert'
        begin
            insert into employee(id, first_name, last_name, salary, city) values(@ID, @Firstname, @Lastname, @Salary, @City)
        end
    
        if @Statementtype = 'Select'
        begin
                select *
            from employee
        end
        if @Statementtype = 'Update'
        begin
            update employee set first_name = @Firstname, last_name=@Lastname, salary=@Salary, city=@City
            where id=@ID
        end
    
        if @Statementtype = 'Delete' 
        begin
        delete from  employee where id=@ID
        end
    end
    
    --For insert the records
    exec MasterInsertUpdateDelete 7, 'Kallesh', 'Yadav', 30000, 'Bangalore', 'Insert'
    
    
    --For update the records
    exec MasterInsertUpdateDelete 4,'Sneha', 'Kumari', 23000, 'Mumbai', 'Update'
    
    select *
    from employee
    
    --For delete the records
    exec MasterInsertUpdateDelete  @ID = 2,  @Statementtype = 'Delete' -->We should specify the parameters name while deleting the specific records
    

    希望对您有所帮助。 :)

    【讨论】:

    • 在这个存储过程中可以插入、更新、检索和删除记录
    猜你喜欢
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    相关资源
    最近更新 更多