我的问题是我无法创建正确的DDL语句'创建表格'列基于其他表中的2列。
决赛桌应该如下:
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:缺少右括号
答案 0 :(得分:1)
您需要create
和insert
声明:
CREATE TABLE PRACOWNICY_ZESPOLY
(
ROCZNA_PLACA number,
NAZWISKO VARCHAR(20),
POSADA VARCHAR(20),
ZESPOL NUMBER(4),
ADRES_PRACY VARCHAR(20)
);
insert into PRACOWNICY_ZESPOLY (ROCZNA_PLACA)
SELECT 12 * PLACA_POD + NVL(PLACA_DOD,0)
FROM PRAC;
答案 1 :(得分:0)
我在this问题中找到了可行的解决方案。
您需要将get_ddl与CTAS语法结合起来。