我是Oracle APEX的新手,我试图在应用程序中运行一个简单的SQL脚本来更新数据库中的一些数据。下面是我使用的脚本:
START TRANSACTION;
SELECT MAX(SAL) FROM Employee;
UPDATE Employee SET SAL = SAL * 100;
COMMIT;
但是,我遇到了以下错误:
ORA-00900: invalid SQL statement
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_230100", line 797
ORA-06512: at "SYS.DBMS_SYS_SQL", line 1658
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_230100", line 782
ORA-06512: at "APEX_230100.WWV_FLOW_DYNAMIC_EXEC", line 2035
我在互联网上寻找解决方案。但我找不到任何类似的东西。我想知道为什么这不管用。
2条答案
按热度按时间lyr7nygr1#
如果你在SQL Workshop中运行这段代码(看起来是这样),请注意:
start transaction
(正如您已经被告知的那样;这不是MySQL)标记一个命令(例如,用鼠标),然后运行它
commit
在此上下文中是无用的。如果你执行它,你会得到提交声明不适用。所有语句都自动提交。
euoag5mw2#
START TRANSACTION;
在Oracle中不是有效语句。事务是从您使用的第一个语句隐式启动的,您不能显式声明事务。
剩下的语句都是Oracle方言中的有效SQL语句。
fiddle
而且很有效。我不知道为什么
如果您使用的编辑器只能运行单个语句,那么您已经使用PL/SQL匿名块将多个SQL语句 Package 到单个PL/SQL语句中,并且您的编辑器正在运行单个PL/SQL语句并将其传递给使用PL/SQL引擎运行每个SQL语句的数据库。
BEGIN
和最终END
。*