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

Sql server 过程-创建引用其他表列类型的表,sql-server,tsql,Sql Server,Tsql,您好,我知道在PL/SQL中使用%type引用列类型是可能的,但是我想知道在T-SQL中是否也可以使用同样的方法 PROCEDURE .... CREATE TABLE TABLE_B ( ID NUMBER NOT NULL, NAME TABLE_A.NAME%TYPE ); ... END PROCEDURE 这可能吗?简短回答否: 我非常喜欢验证,所以这里有三个来源都说基本上是一样的:不,但它可以被模拟(尽管很痛苦),它增加了设计和维护的复杂性 参考资料:

您好,我知道在PL/SQL中使用%type引用列类型是可能的,但是我想知道在T-SQL中是否也可以使用同样的方法

PROCEDURE ....

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

... END PROCEDURE
这可能吗?

简短回答否:

我非常喜欢验证,所以这里有三个来源都说基本上是一样的:不,但它可以被模拟(尽管很痛苦),它增加了设计和维护的复杂性

参考资料:

  • 用户定义类型的示例:

    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
    
    否:。它指出,“Microsoft SQL Server不支持并且没有Oracle%TYPE的等效项。”或MSFT论坛:如果表的数据类型可能会更改,则可以在表和进程中使用用户定义的类型。这意味着您对UDT所做的任何更改都将同时对表和过程进行。之前也有人问过,也有人回答过。这只是表明,自2009年以来,它没有被添加。