Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server 2012中,如何从视图、函数或存储过程中获取列名和数据类型?_Sql_Sql Server_Tsql_Sql Server 2012 - Fatal编程技术网

在SQL Server 2012中,如何从视图、函数或存储过程中获取列名和数据类型?

在SQL Server 2012中,如何从视图、函数或存储过程中获取列名和数据类型?,sql,sql-server,tsql,sql-server-2012,Sql,Sql Server,Tsql,Sql Server 2012,我可以通过以下方式从数据库表中获取列名和数据类型: SELECT COLUMN_NAME, DATA_TYPE FROM information_schema.columns WHERE TABLE_NAME = 'xxx' 如何从视图、函数或存储过程中获取列名和数据类型?我想我必须使用每种方法的结果来获得它们,但我不确定 感谢您的帮助查看专栏: SELECT * FROM sys.columns c where c.object_id = OBJECT_ID('<schema>

我可以通过以下方式从数据库表中获取列名和数据类型:

SELECT COLUMN_NAME, DATA_TYPE 
FROM information_schema.columns
WHERE TABLE_NAME = 'xxx'
如何从视图、函数或存储过程中获取列名和数据类型?我想我必须使用每种方法的结果来获得它们,但我不确定

感谢您的帮助

查看专栏:

SELECT * FROM sys.columns c where c.object_id = OBJECT_ID('<schema>.<view name>')
从sys.c列中选择*,其中c.object\u id=object\u id('.')
表值函数的列:

SELECT * FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS rc WHERE rc.TABLE_NAME = '<udf name>'
从信息\u SCHEMA.ROUTINE\u列rc中选择*其中rc.TABLE\u NAME=''
存储过程的列

对于SQL server 2012及更高版本:

SELECT name, system_type_name
FROM sys.dm_exec_describe_first_result_set_for_object
(
  OBJECT_ID('<shcema>.<sp name>'), 
  NULL
);
选择名称、系统类型\u名称
从sys.dm_exec_描述_对象的第一个结果集
(
对象ID('.'),
无效的
);

摘自。阅读此处的答案,了解可能的方法(例如2012年之前)。

查看列也可以在信息\u schema.columns中找到。有关SP,请参阅