使用 if then 语句改变存储过程

问题描述

    CREATE PROCEDURE usp_remove_vendor
    @vendor varchar(50)
    AS
    DECLARE 
    @vendorid  char(10);
    BEGIN  SET @vendorid = (SELECT vend_id FROM vendors WHERE vend_name = @vendor );
    DELETE from  products where vend_id =@vendorid;
    DELETE from vendors where vend_id =@vendorid;
    END

我需要帮助更改语句验证参数中的供应商名称 (@vname) 是否甚至在供应商列表中。修改,如果供应商在系统中,删除它们,否则你想显示一条消息“找不到供应商”(IF THEN 语句)

要确定局部变量是否为空,请考虑查看它的长度(查找 LEN() 的引用 - 请注意,如果您更喜欢以不同的方式执行也可以。 使用 PRINT 输出 'vendor not found'

解决方法

这可能对你有帮助......

CREATE PROCEDURE usp_remove_vendor
    @Vendor varchar(50)
    AS
    BEGIN
        DECLARE @vendorid  char(10),@result NVARCHAR(50);
        SELECT @vendorid=vend_id FROM vendors WHERE vend_name = @Vendor;

        IF @vendorid IS NULL OR @vendorid=''
        BEGIN
            SET @result='Vendor not found'
            print 'Vendor not found'
        END
        ELSE
        BEGIN

            DELETE from  products where vend_id =@vendorid;
            DELETE from vendors where vend_id =@vendorid;
            SET @result='Vendor deleted successfully.'
        END
        SELECT 'Result'=@result

    END

说明 无论是否找到供应商,我都使用 Result 变量返回结果?