2011-09-20 34 views
3

我很好奇,如果我可以在創建另一列時使用現有表格列的類型。就像使用像varchar這樣的數據類型,我希望我的列與另一個表中的列具有相同的類型。創建表格時可以使用現有表格列的類型嗎?

我想象像 CREATE TABLE FIRST(ID號(5),名VARCHAR(25))

然後

CREATE TABLE SECOND(ID號(6),價值FIRST.NAME %TYPE)

和值列的類型是VARCHAR(25)

我認爲這是一個普通的SQL的問題,雖然我使用的是Oracle。只有

回答

2

你可以做以下

SELECT TOP 0 CAST(0 as int) as 'id', Field 
INTO NewTable 
FROM OtherTable 
+0

這隻會創建SECOND表作爲FIRST表的副本(當然沒有數據)。我想要的是我在SECOND表中選擇的一列使用FIRST表 – Tchypp

+0

@Tchypp中的一列的類型,可以動態構建表創建腳本(從user_tab_columns檢索列定義)並執行它。但我認爲你正在尋找一個更簡單的解決方案,就像使用%TYPE sntax的PLSQL中可用的解決方案。 –

+0

好吧,即使我們減少到PLSQL,%TYPE技巧也不起作用。 PLSQL解決方案目前適合我。 – Tchypp

-1

你可以在SQL Server中做到這一點通過使用SELECT INTO

CREATE TABLE SECOND AS (
    SELECT ID, NAME AS VALUE 
    FROM FIRST 
    WHERE 1 = 2 
); 

如果覺得%類型的語法是PLSQL的事情:

+0

...這就是爲什麼我在第一行中提到**在SQL Server **中。 – JNK

1

在標準SQL中,你會寫一個CREATE DOMAIN語句。

CREATE DOMAIN my_name_type VARCHAR(25); 

但我不認爲Oracle支持CREATE DOMAIN,所以你我想你需要創建一個對象來代替。

create type my_name_type as object 
(my_name_col varchar2(25)); 

無論哪種情況,您都可以直接使用它創建表格。

create table test (
    user_name my_name_type 
); 

我記得INSERT語句的語法有點奇怪,檢查文檔的。

相關問題