过程 - 创建引用其他表列类型的表
问题描述:
嗨我知道在PL/SQL中可以使用引用类型为%TYPE的列,但我想知道T-SQL中是否有相同的东西。过程 - 创建引用其他表列类型的表
PROCEDURE ....
CREATE TABLE TABLE_B
(
ID NUMBER NOT NULL,
NAME TABLE_A.NAME%TYPE
);
... END PROCEDURE
这可能吗?
答
短的答案编号:
我验证的大风扇所以这里有3个来源,所有的说法基本相同的事情:没有,但它可以模拟(虽然痛苦),并将其添加了一层复杂性,以设计和维护。
参考文献:
- Microsoft SQL Server does not support and has no an equivalent of Oracle %TYPE.
- 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
- Migrating to SQL server from Oracle 的用户自定义类型
实施例:
的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
否: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
http://*.com/questions/1849396/t-sqls-equivalent-of-oracles-type-operator先前提问和回答。这只是表明,自2009年以来它并未被添加。 – xQbert 2014-09-24 14:49:15