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

Am_*_*ful 3 sqlplus oracle10g

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

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

SELECT * FROM emp;

输出结果是" 没有选择行 ".

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

Jus*_*ave 9

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

在Oracle中,当您运行构成事务的任何语句并且您确信您的更改是正确的时,您需要明确发出一个commit以使这些更改对其他会话可见,即

SQL> insert into some_table( <<columns>> ) values( <<values>> );
SQL> insert into some_other_table( <<columns>> ) values ( <<more values>> );
SQL> commit;
Run Code Online (Sandbox Code Playgroud)

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

SQL> set autocommit on;
SQL> <<do whatever>>
Run Code Online (Sandbox Code Playgroud)

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