【发布时间】:2016-03-18 12:50:32
【问题描述】:
我的问题是我无法使用基于其他表的 2 列的列创建正确的 DDL 语句“创建表”。
决赛桌应如下所示:
CREATE TABLE PRACOWNICY_ZESPOLY AS
SELECT 12*PLACA_POD + NVL(PLACA_DOD,0) AS ROCZNA_PLACA FROM PRAC;
ALTER TABLE PRACOWNICY_ZESPOLY
ADD (
NAZWISKO VARCHAR(20),
POSADA VARCHAR(20),
ZESPOL NUMBER(4),
ADRES_PRACY VARCHAR(20) );
我正在尝试这样的事情:
CREATE TABLE PRACOWNICY_ZESPOLY (
NAZWISKO VARCHAR(20),
POSADA VARCHAR(20),
ZESPOL NUMBER(4),
ADRES_PRACY VARCHAR(20),
ROCZNA_PLACA NUMBER(6,2) AS (SELECT 12*PLACA_POD + NVL(PLACA_DOD,0) FROM PRAC));
结果:
SQL 错误:ORA-00936:缺少表达式
CREATE TABLE PRACOWNICY_ZESPOLY (
NAZWISKO VARCHAR(20),
POSADA VARCHAR(20),
ZESPOL NUMBER(4),
ADRES_PRACY VARCHAR(20))
AS SELECT 12*PLACA_POD + NVL(PLACA_DOD,0) FROM PRAC;
结果:
SQL 错误:ORA-01773:可能未在此 CREATE TABLE 中指定列数据类型
CREATE TABLE PRACOWNICY_ZESPOLY AS
SELECT 12*PLACA_POD + NVL(PLACA_DOD,0) AS ROCZNA_PLACA FROM PRAC,
(NAZWISKO VARCHAR(20),
POSADA VARCHAR(20),
ZESPOL NUMBER(4),
ADRES_PRACY VARCHAR(20));
结果:
SQL 错误:ORA-00907:缺少右括号
【问题讨论】:
-
只有当你拔掉插头时,计算机被指示做某事并且“没有结果”。在其他所有情况下,都会有某种反应,例如错误消息。
-
那么你到底想在这里实现什么?您是否只是在寻找一种方法来组合来自两个不同表的数据?如果是这样,请创建一个视图。一旦源表中的数据更新,您是否需要以某种方式更新您的新“表”?如果是这样,请创建一个触发器来添加数据。如果您只想查看一个无非是其他两列相加的列,为什么不在源表中创建一个计算列?