我很好奇,如果我可以在創建另一列時使用現有表格列的類型。就像使用像varchar這樣的數據類型,我希望我的列與另一個表中的列具有相同的類型。創建表格時可以使用現有表格列的類型嗎?
我想象像 CREATE TABLE FIRST(ID號(5),名VARCHAR(25))
然後
CREATE TABLE SECOND(ID號(6),價值FIRST.NAME %TYPE)
和值列的類型是VARCHAR(25)
我認爲這是一個普通的SQL的問題,雖然我使用的是Oracle。只有
我很好奇,如果我可以在創建另一列時使用現有表格列的類型。就像使用像varchar這樣的數據類型,我希望我的列與另一個表中的列具有相同的類型。創建表格時可以使用現有表格列的類型嗎?
我想象像 CREATE TABLE FIRST(ID號(5),名VARCHAR(25))
然後
CREATE TABLE SECOND(ID號(6),價值FIRST.NAME %TYPE)
和值列的類型是VARCHAR(25)
我認爲這是一個普通的SQL的問題,雖然我使用的是Oracle。只有
你可以做以下
SELECT TOP 0 CAST(0 as int) as 'id', Field
INTO NewTable
FROM OtherTable
你可以在SQL Server中做到這一點通過使用SELECT INTO
CREATE TABLE SECOND AS (
SELECT ID, NAME AS VALUE
FROM FIRST
WHERE 1 = 2
);
如果覺得%類型的語法是PLSQL的事情:
...這就是爲什麼我在第一行中提到**在SQL Server **中。 – JNK
在標準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語句的語法有點奇怪,檢查文檔的。
這隻會創建SECOND表作爲FIRST表的副本(當然沒有數據)。我想要的是我在SECOND表中選擇的一列使用FIRST表 – Tchypp
@Tchypp中的一列的類型,可以動態構建表創建腳本(從user_tab_columns檢索列定義)並執行它。但我認爲你正在尋找一個更簡單的解決方案,就像使用%TYPE sntax的PLSQL中可用的解決方案。 –
好吧,即使我們減少到PLSQL,%TYPE技巧也不起作用。 PLSQL解決方案目前適合我。 – Tchypp