程序 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
我需要 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