我正在执行以下存储过程,该过程返回0值:
CREATE PROCEDURE [dbo].[sproc_tblBook_DisplayReservations]
@bor_id varchar (9)
AS
SELECT bor_id, isbn, bk_author, bk_title,
cop_loan_type, cop_status, res_date
FROM tblBook, tblReservation, tblCopy, tblBorrower
WHERE
tblReservation.res_cleared_date = NULL
AND
tblBook.isbn = tblReservation.fk1_isbn
AND
tblBook.isbn = tblCopy.fk1_isbn
AND
tblBorrower.bor_id = tblReservation.fk2_bor_id
AND
bor_id = @bor_id;
RETURN 0
当然,期望的结果是它显示符合where条件标准的记录
这些记录存在,但它们没有显示
我确信我的语法是正确的,所以我完全彻底难倒
乍一看,如果您有任何建议,请告诉您
如果有人想仔细看看,我已将我的节目联系在一起
不幸的是,我认为这对于帮助我解决这个问题非常重要,但是,如果有人读过这篇文章,那么谢谢你。
以下链接是我在Visual Studio中工作的程序(.zip文件 - 如果需要,可随意升级.mdf文件/ sql服务器):
http://s000.tinyupload.com/index.php?file_id=07002279584481194620
如果你有时间,请下载我的程序,看看你是否能找到问题!
答案 0 :(得分:2)
将tblReservation.res_cleared_date = NULL
更改为tblReservation.res_cleared_date IS NULL
。在Sql中,没有任何东西等于null,甚至没有其他null
另外,将隐式连接更改为显式连接:
CREATE PROCEDURE [dbo].[sproc_tblBook_DisplayReservations]
@bor_id varchar (9)
AS
SELECT bor_id, isbn, bk_author, bk_title,
cop_loan_type, cop_status, res_date
FROM tblBook
INNER JOIN tblReservation ON tblBook.isbn = tblReservation.fk1_isbn
INNER JOIN tblCopy ON tblBook.isbn = tblCopy.fk1_isbn
INNER JOIN tblBorrower ON tblBorrower.bor_id = tblReservation.fk2_bor_id
WHERE tblReservation.res_cleared_date IS NULL
AND bor_id = @bor_id;
RETURN 0