过程 - 创建引用其他表列类型的表

时间:2014-09-24 14:33:13

标签: sql-server tsql

嗨我知道在PL / SQL中可以使用%TYPE引用列类型,但我想知道T-SQL中是否有相同的东西。

PROCEDURE ....

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

... END PROCEDURE

这可能吗?

1 个答案:

答案 0 :(得分: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数据类型允许您创建变量并使该变量的数据类型由表或视图列或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