程序 return 对或错

procedure return True or False

我需要 firebird 3.0 中的存储过程来 return True、False 或 1,0 结果 检查此人或记录是否存在于数据库中。如果存在,程序应该 return true,如果不存在,则 return False,或者 return 1,如果不存在,则 return 0

这是我的程序,但它给了我一个错误:

Invalid token.
Dynamic SQL Error.
SQL error code = -104
Token unknown - line 10, column 1.
end.

我想通过检查名字姓氏和出生日期来检查记录是否存在。

create procedure aa(
v varchar(20),
g varchar(20),
dd date)
as 
begin
select fname,lname,bday from STUDENT
where not exists (select fname,lname,bday from STUDENT  where fname=:v and lname=:g and bday=:dd)
end

您的存储过程不起作用,因为 1) 它没有 RETURNS clause so it cannot return true or false, and 2) a select in PSQL requires an INTO clause 将值放入变量或 return-parameter.

根据您的代码,执行您想要的操作的存储过程将是:

create procedure aa(
  v varchar(20),
  g varchar(20),
  dd date)
  returns (student_exists boolean)
as 
begin
  student_exists = exists (select * from STUDENT where fname=:v and lname=:g and bday=:dd);
end

根据您需要实现的目标,function 可能更合适:

create procedure aa(
  v varchar(20),
  g varchar(20),
  dd date)
  returns boolean
as 
begin
  return exists (select * from STUDENT where fname=:v and lname=:g and bday=:dd);
end