找到字符串后获取返回值

时间:2019-04-28 18:43:08

标签: sql sql-server stored-procedures printing

如果在表中找到ISBN,我需要让@r返回1的值。

作业问题:创建一个名为FindABookbyISBN的过程。它接受一个类型为varchar(20)的参数@value,它是某人正在寻找的ISBN。如果该过程找到该书,则显示该书的信息并返回1。如果未找到该书,则该过程将打印类似“找不到书”的内容,并返回0。

该消息应如下所示:

找到的书是isbn 9780393248968

1

找不到带有isbn 9780393248968的书

0


IF OBJECT_ID ('FindABookbyISBN') IS NOT NULL
    DROP PROCEDURE FindABookbyISBN

GO
CREATE PROCEDURE FindABookbyISBN @ISBN varchar(20) AS

IF EXISTS (SELECT * FROM BookInfo WHERE ISBN = @ISBN)
    BEGIN 
    PRINT 'Found book with ISBN ' + @ISBN

END

ELSE

BEGIN
    PRINT 'Cannot find book with ISBN ' + @ISBN

END

GO

--testing procedure

--success

Declare @r int

EXEC @r = FindABookByISBN '9780393248968'

Print @r

--failure

Declare @t int

EXEC @t = FindABookByISBN '1234' 

Print @t

1 个答案:

答案 0 :(得分:2)

Gordon Linoff在评论部分回答了我的问题。

我只需要为其添加一个Return值。

IF EXISTS (SELECT * FROM BookInfo WHERE ISBN = @ISBN)
    BEGIN 
    PRINT 'Found book with ISBN ' + @ISBN
    Return 1
    END
    ELSE
    BEGIN
    PRINT 'Book was not found with ISBN ' + @ISBN
    END

GO