Sql server 过程-创建引用其他表列类型的表
您好,我知道在PL/SQL中使用%type引用列类型是可能的,但是我想知道在T-SQL中是否也可以使用同样的方法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 这可能吗?简短回答否: 我非常喜欢验证,所以这里有三个来源都说基本上是一样的:不,但它可以被模拟(尽管很痛苦),它增加了设计和维护的复杂性 参考资料:
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年以来,它没有被添加。