SQL Plus-没有选择行错误;虽然插入的数据没有任何错误

时间:2014-03-31 17:47:16

标签: oracle10g sqlplus

我是这个 SQL Plus和Oracle 10g 的新手。所以,请不要介意愚蠢的问题。

看,我面临的问题是每当我在桌面上发出查询时

SELECT * FROM emp;

输出结果是“没有选择行”。

我处于完全的两难境地,因为表格及其架构已明确保留,但我输入的数据未显示。所有用户生成的表都会发生同样的情况。元组没有显示出来。这是与 SQL Plus 相关的问题吗? 请帮助并给我一个适当的指导。

1 个答案:

答案 0 :(得分:8)

在Oracle中,您发出的每个声明都是事务的一部分。在另一个会话可以看到数据之前,需要提交这些事务(在这种情况下,更改是永久性的)或回滚(在这种情况下,更改将被还原)。某些数据库要么不支持事务(即MySQL中的MyISAM表),要么不隐式启动事务(即SQL Server)。 Oracle方法通常要优越得多 - 当您无意中运行缺少重要谓词的delete语句时,在删除您期望的更多行时回滚操作的能力可以成为真正的职业保护程序。

在Oracle中,当您运行构成交易的任何语句并确信您的更改是正确的时,您需要明确发出commit以使这些更改对其他会话可见,即< / p>

SQL> insert into some_table( <<columns>> ) values( <<values>> );
SQL> insert into some_other_table( <<columns>> ) values ( <<more values>> );
SQL> commit;

如果你真的,真的,非常确定你更喜欢在其他工具中习惯的行为,你可以告诉SQL * Plus自动提交你的更改

SQL> set autocommit on;
SQL> <<do whatever>>

这通常是一个非常糟糕的主意。您不必明确发布commit所带来的微小好处远远超过了确保其他会话不会看到处于不一致状态的数据的能力(即,您是否将资金从帐户A转移到帐户) B通过发布两个更新声明,你不希望有人看到中间结果,其中两个账户都有钱或者两个账户都没有),并且如果事实证明做了除你预期之外的其他事情,则能够回滚更改