【发布时间】:2014-05-07 05:55:30
【问题描述】:
我使用的是 Oracle 10.2.0.1
我有一个包含列(id、用户名、密码、计数)的表“AppUser”
我想做的是:
check username
if (username exists )
{
check password
if (password exists)
{
set count = 0 and return 1
}
else (password not exists)
{
check count < = 5
if true(count + 1 and return 0)
else return 2 (user locked)
}
}
我已经使序列“countid”最小值=1,最大值=5,递增1,循环为真。
现在我想制作一个包并从后面的代码中调用它。
到目前为止我有这个..但它给了我错误 ORA-00900: invalid SQL statement
IF count(select "LoginName" from "ApplicationUser" where exists (select "Count" from
"ApplicationUser" where Count<=5) and "LoginName" =:param1) >0
THEN select "Pass" from "ApplicationUser" where "Pass"=:param2;
ELSE return 0;
END IF;
【问题讨论】:
-
您是否正在尝试构建 SQL 语句?还是 PL/SQL 块?
IF是 PL/SQL 构造,而不是 SQL 构造。您的表中实际上有一个名为“计数”的列吗?!您是否尝试将该值更新为 PL/SQL 块的一部分? -
PL/SQL 是肯定的。是的,我在表中有一个列名 Count。我希望它是自动生成的,这就是为什么我还制作了一个引用它的序列。现在。当“用户名”存在而密码不存在并且计数位于第 5 位时,就会出现真正的问题。
标签: sql if-statement plsql oracle10g