如何检索一本书PLSQL的副本数量

时间:2016-02-22 16:09:47

标签: sql oracle select plsql

您好我正在尝试编写一个程序,从我创建的表中检索特定图书的副本数。

create or replace PROCEDURE book_count(c_isbn IN book_copies.isbn%TYPE)
IS
total number;

BEGIN
SELECT COUNT (*)
FROM book_copies
WHERE isbn = c_isbn;
DBMS_OUTPUT.PUT_LINE('Book count: ' || total);
END book_count;

我遇到的错误是SELECT语句中需要一个INTO子句,但我似乎无法完成它。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

create or replace PROCEDURE book_count(c_isbn IN book_copies.isbn%TYPE)
IS
total number;

BEGIN
SELECT COUNT(*) INTO TOTAL
FROM book_copies
WHERE isbn = c_isbn;
DBMS_OUTPUT.PUT_LINE('Book count: ' || total);
END book_count;

答案 1 :(得分:0)

你不能在开始结束块中使用纯SQL。您需要在into clause中插入尽可能多的变量,在选择后立即插入,它与您选择的列数相匹配。

你需要做

SELECT COUNT (*)
into total
FROM book_copies
WHERE isbn = c_isbn;

for i in ( 
    SELECT COUNT (*) count
    FROM book_copies
    WHERE isbn = c_isbn;
)
loop
   total := i.count;
end loop;

请记住,上面一个可以抛出两个异常,no_data_found和to_many_rows,而循环必须手动注意到这个“错误”。