Sql 找到字符串后获取要返回的值
如果在表中找到ISBN,我需要@r返回一个值 家庭作业问题:创建一个名为FindABookbyISBN的过程。它接受一个varchar20类型的参数@value,这是某人正在寻找的ISBN。如果该过程找到了书本,它将显示书本信息并返回1。如果找不到书,该过程将打印类似“找不到书”的内容并返回0 消息应如下所示: 找到isbn 9780393248968的书Sql 找到字符串后获取要返回的值,sql,sql-server,stored-procedures,printing,Sql,Sql Server,Stored Procedures,Printing,如果在表中找到ISBN,我需要@r返回一个值 家庭作业问题:创建一个名为FindABookbyISBN的过程。它接受一个varchar20类型的参数@value,这是某人正在寻找的ISBN。如果该过程找到了书本,它将显示书本信息并返回1。如果找不到书,该过程将打印类似“找不到书”的内容并返回0 消息应如下所示: 找到isbn 9780393248968的书 1 0 IF OBJECT_ID ('FindABookbyISBN') IS NOT NULL DROP PROCEDURE
1
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
找不到isbn为9780393248968的书
1
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
戈登·林诺夫在评论部分回答了我的问题 我只需要为它添加一个返回值
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
您的存储过程没有返回状态值。哦!非常感谢。我知道这很简单。感谢您的意见!你的作业不是很好。事实上的模式是成功返回零,错误/警告返回非零。对于未找到的条件,应返回1值。很高兴您提出了这个问题。这让我很困惑。因此,我的老师提供了信息最终应该是什么样子的,正如你所说的。她的例子:找到ISBN 9780393248968的书。。。0'找不到ISBN为1234的图书。。。1.但问题的措辞似乎是她在寻找相反的答案。我想她可能弄错了。什么是事实模式?忽略事实问题。你觉得我把这个搞错了吗?谢谢你的帮助!我不能说你是否在没有看到实际问题的情况下混淆了你的作业:-如果问题与列出的问题相同,那么她就把它倒过来了。我只是建议在真实世界中遵循这种模式,这可能与学术界有所不同。那将是一个很好的话题,可以在课堂上讨论。是的,我肯定会在周一提出来。再次感谢您的投入。