CREATE PROCEDURE book_check(book_Id varchar(64))
begin
declare book_available varchar(64);
select book_id into book_available
from book_copies
where No_of_Copies >0 and book_id=book_Id;
if(book_Id in book_available ) then
select concat ("Book available");
else
select concat ("Book not available");
end if;
end
//
我能用什么来代替'in'。我知道错误的语法。
答案 0 :(得分:1)
我不清楚你要做什么。我假设你想知道一本书是否可用,并将该信息返回给该函数的调用者。
您对过程标题和变量的声明是错误的。
declare
select
语句。 *使用:=
p_
,将局部变量赋予前缀l_
,但是任何可以避免列名和变量之间发生名称冲突的事情都可以 - 只需保持一致。CREATE function book_check(p_book_id varchar)
return varchar
as
l_count integer;
l_result varchar(20);
begin
select count(*)
into l_count
from book_copies
where No_of_Copies > 0
and book_id = p_book_id;
if l_count > 0 then
l_result := 'Book available';
else
l_result := "Book not available";
end if;
return result;
end;
/
你应该花点时间阅读PL/SQL Language reference。所有上述内容都在那里解释。
答案 1 :(得分:1)
这很容易 - 尝试这样的事情:
create or replace function book_check(book_id varchar) return varchar as
begin
for r in (select 1 from book_copies where no_of_copies > 0 and book_id = book_check.book_id) loop
return 'Book available';
end loop;
return 'Book not available';
end book_check;
/