Database 在Oracle数据库上实现IF语句
我正在尝试实现一个IF语句来在我的Oracle数据库上运行查询 期望: 如果员工名为John,则显示有限的项目(项目1和项目2),如果不是John,则显示完整的列表Database 在Oracle数据库上实现IF语句,database,oracle,if-statement,Database,Oracle,If Statement,我正在尝试实现一个IF语句来在我的Oracle数据库上运行查询 期望: 如果员工名为John,则显示有限的项目(项目1和项目2),如果不是John,则显示完整的列表 DECLARE employeeName STRING := 'John'; BEGIN IF (employeeName = 'John') THEN (SELECT TableA.Table from Table where TableA.Table = 'Item1' OR TableA.Table
DECLARE
employeeName STRING := 'John';
BEGIN
IF (employeeName = 'John') THEN
(SELECT TableA.Table from Table where TableA.Table = 'Item1' OR TableA.Table = 'Item2');
ELSE
(SELECT TableA.Table from Table);
END IF;
END;
以下是错误输出:
错误报告:ORA-06550:第6行第2列:PLS-00103:在预期以下情况之一时遇到符号“”:
(如果循环mod null pragma raise,则开始案例为goto声明退出
返回“标识符”为双引号时选择更新
分隔标识符“”为绑定变量“”“继续关闭当前
删除获取锁插入打开回滚保存点集sql执行
提交所有合并管道清除
06550.00000-“第%s行,第%s列:\n%s”
*原因:通常是PL/SQL编译错误
*行动:
我做错了什么?请原谅我对数据库上实现的IF语句的无知。在您的代码中
是保留关键字。请使用双引号或其他标识符表
- select在中缺少
- 字符串缺少长度
for
循环对结果集进行循环
DECLARE
employeeName varchar2(100) := 'John';
BEGIN
for t in (select "table" from tablea
where "table" in ('item1', 'item2')
or employeename = 'john') loop
dbms_output.put_line(t."table");
end loop;
END;
/
表被用作通用名称,我的表有一个不同的名称,名为employeeName。“for”语句不会占用更多资源吗?您的目标到底是什么?如果在基于集合的方法中可以实现,那么一定要使用SQL操作。如果您的目标保证采用过程性方法,那么for是一种不错的方法。最好结合使用使用批量收集和FORALL if suitable因此,如果员工名为John,他是唯一的实习生,他可以有限地查看员工列表,如果他不是John,他将获得一个完整的列表。如果不使用“declare”就可以实现这一点,那将是完美的。这是PL/SQL,您不能像那样嵌入SQL-您需要定义要做什么使用结果(例如,
SELECT..INTO..
)。