2014-09-24 62 views
0

嗨我知道在PL/SQL中可以使用引用類型爲%TYPE的列,但我想知道T-SQL中是否有相同的東西。過程 - 創建引用其他表列類型的表

PROCEDURE .... 

CREATE TABLE TABLE_B 
(
    ID NUMBER NOT NULL, 
    NAME TABLE_A.NAME%TYPE 
); 

... END PROCEDURE 

這可能嗎?

+2

否:http://doc.ispirer.com/sqlways/Output/SQLWays-1-041.html。它聲明,「Microsoft SQL Server不支持,並且沒有Oracle%TYPE的等效項。」或MSFT論壇:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/c1a3e39e-ba83-4573-82b6-4ddedb626d21/sql-server-equivalent-of-oracles-tablecolumnnametype?forum=transactsql如果您的表格數據類型可能會發生變化,您可以在表格和proc中使用用戶定義類型。這將意味着您對UDT所做的任何更改都會對錶和proc進行更改。 – xQbert 2014-09-24 14:37:20

+0

http://stackoverflow.com/questions/1849396/t-sqls-equivalent-of-oracles-type-operator先前提問和回答。這只是表明,自2009年以來它並未被添加。 – xQbert 2014-09-24 14:49:15

回答

1

短的答案編號:

我驗證的大風扇所以這裏有3個來源,所有的說法基本相同的事情:沒有,但它可以模擬(雖然痛苦),並將其添加了一層複雜性,以設計和維護。

參考文獻:

  1. Microsoft SQL Server does not support and has no an equivalent of Oracle %TYPE.
  2. If your table's data type is likely to change, you can use a user-defined-type in both the table and the proc. This will mean that any changes you make to the UDT are made to both the table and the proc
  3. Migrating to SQL server from Oracle
  4. 的用戶自定義類型

實施例:

的Oracle的%TYPE數據類型,可以創建可變並定義該變量的數據類型d通過表或視圖列或PL/SQL包變量。

在T-SQL中沒有Oracle的%TYPE數據類型的等價物,但可以使用用戶定義的數據類型(UDT)進行模擬(不太方便)。以下是一個示例:

EXEC sp_addtype 'MyType', 'smallint', NULL 

CREATE TABLE MyTable (i MyType) 

CREATE PROC MyProc 
AS 
BEGIN 
DECLARE @i MyType 
END