SQL 创建 table 列 AS SELECT FROM OTHER TABLE
SQL create table column AS SELECT FROM OTHER TABLE
我的问题是我无法使用基于其他 table.
的 2 列的列创建正确的 DDL 语句 'create table'
最终的 table 应该如下所示:
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 Error: ORA-00936: missing expression
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 Error: ORA-01773: may not specify column datatypes in this 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 Error: ORA-00907: missing right parenthesis
您需要一个 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;
我在 this 问题中找到了可行的解决方案。
您需要将 get_ddl 与 CTAS 语法相结合。
我发现要解决
Error: ORA-01773: may not specify column datatypes in this CREATE TABLE
this article 工作:
How to deal with ORA-01773 from Oracle 9i ?
Remove column datatypes. The datatypes of the SELECT list expressions are automatically used as the column datatypes.
我的问题是我无法使用基于其他 table.
的 2 列的列创建正确的 DDL 语句 'create table'最终的 table 应该如下所示:
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 Error: ORA-00936: missing expression
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 Error: ORA-01773: may not specify column datatypes in this 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 Error: ORA-00907: missing right parenthesis
您需要一个 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;
我在 this 问题中找到了可行的解决方案。
您需要将 get_ddl 与 CTAS 语法相结合。
我发现要解决
Error: ORA-01773: may not specify column datatypes in this CREATE TABLE
this article 工作:
How to deal with ORA-01773 from Oracle 9i ? Remove column datatypes. The datatypes of the SELECT list expressions are automatically used as the column datatypes.