首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么SQL语句不能在Oracle10g中创建的表中工作

为什么SQL语句不能在Oracle10g中创建的表中工作
EN

Stack Overflow用户
提问于 2022-06-24 14:17:00
回答 1查看 33关注 0票数 0

我有一个Oracle SQL数据库,我上传到Oracle上有两个脚本,一个包含表,另一个包含注册表。

我有一个有2列的表DEPARTMENTSCODENAME

Oracle 10g SQL home > SQL workshop > SQL commands中,我输入以下语句:

代码语言:javascript
复制
SELECT CODE, NAME 
FROM DEPARTMENTS

结果是

“无数据发现”

我无法在Oracle10g或livesql.oracle.com中正确检索结果。

我的陈述不正确吗?不是检索上传的数据吗?

EN

回答 1

Stack Overflow用户

发布于 2022-06-24 19:33:20

结果实际上应该是“没有选择行”,而不是“没有找到数据”。

您说您有两个脚本;我猜想其中一个脚本包含这样的内容:

代码语言:javascript
复制
SQL> create table departments
  2    (code   number,
  3     name   varchar2(20));

Table created.

基本上,你创建了一个空表。如果你质疑它,里面什么都没有:

代码语言:javascript
复制
SQL> select code, name from departments;

no rows selected

因此,第二个脚本很可能包含填充在第一个脚本中创建的表的语句。这就是你所谓的“登记处”吗?

代码语言:javascript
复制
SQL> insert into departments (code, name)
  2    select 1, 'Accounting' from dual union all
  3    select 2, 'Finance'    from dual;

2 rows created.

让我们重复前面的select语句:

代码语言:javascript
复制
SQL> select code, name from departments;

      CODE NAME
---------- ----------
         1 Accounting
         2 Finance

SQL>

对,现在我们得到了结果。

另一方面,您可能实际上运行了两个脚本,创建了表和插入的行,但是在第二个脚本的末尾没有提交。如果然后打开一个新会话(在Oracle 10g SQL home > SQL workshop > SQL commands中),那么您会看到表(因为create table是一个DDL,它修改了数据字典,所以您编写的select没有返回"ORA-00942: table或view不存在“),但是insert是一个DML,您必须使用COMMIT -否则只有运行insert的会话才会看到数据。

最后,检查insert语句是否成功完成;如果没有,则有可能没有插入任何内容,并且必须首先修复错误。哪几个?不知道,我没有这些脚本,也没有看到屏幕(或者日志文件,如果有的话)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72745407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档