Sql server 检索所选列的数据类型

Sql server 检索所选列的数据类型,sql-server,tsql,Sql Server,Tsql,是否有方法从SQL Server中的存储过程中检索选定列的数据类型 例如 需要如下检索 Column DataType ID INT Description VARCHAR 是的,这是可能的,您可以使用下面的查询。您需要根据需要传递表名和列名。它将返回列名和数据类型 SELECT COLUMN_NAME,DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'YourT

是否有方法从SQL Server中的存储过程中检索选定列的数据类型

例如

需要如下检索

Column        DataType
ID             INT
Description    VARCHAR

是的,这是可能的,您可以使用下面的查询。您需要根据需要传递表名和列名。它将返回列名和数据类型

SELECT COLUMN_NAME,DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE 
     TABLE_NAME = 'YourTableName' AND 
     COLUMN_NAME in( 'YourColumnName1', 'YourColumnName2')
Create Proc GetColumns (@tablename varchar(100)) 
as
Begin
SELECT COLUMN_NAME,DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE 
     TABLE_NAME =  @tablename
End
go

Exec GetColumns 'YourTableName'
下面的程序将表名作为参数,并将返回所有列名和数据类型

SELECT COLUMN_NAME,DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE 
     TABLE_NAME = 'YourTableName' AND 
     COLUMN_NAME in( 'YourColumnName1', 'YourColumnName2')
Create Proc GetColumns (@tablename varchar(100)) 
as
Begin
SELECT COLUMN_NAME,DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE 
     TABLE_NAME =  @tablename
End
go

Exec GetColumns 'YourTableName'

由于这是一个SP,您可以使用:

如果只需要特定列,则需要将
EXEC
中的数据插入临时表,然后选择这些表。(稍后将发布如何操作)

编辑:使用链接文档设计临时表:


@拉努:你能把它作为一个答案吗?-)@HarshaW请看我的答案。您还可以添加where条件以仅获取特定列信息。希望这能提供您现在所需的所有信息。对于SP,这是如何工作的?这将不返回任何行。它也将在SP中运行,您可以尝试,它将根据“in子句”中传递的列不返回任何行。如果要返回所有具有数据类型的列,只需对表名进行筛选。。SP不是表。好的,您希望检索SP的所有参数名称以及数据类型如果您希望检索SP的所有参数名称以及数据类型,那么这是可能的,但是如果您希望从过程体检索列名及其类型,那么我认为这是不可行的。让我知道你的要求。
CREATE TABLE #FirstResultSet (is_hidden bit NOT NULL,
                              column_ordinal int NOT NULL,
                              name sysname NULL,
                              is_nullable bit NOT NULL,
                              system_type_id int NOT NULL,
                              system_type_name nvarchar(256) NULL,
                              max_length smallint NOT NULL,
                              precision tinyint NOT NULL,
                              scale tinyint NOT NULL,
                              collation_name sysname NULL,
                              user_type_id int NULL,
                              user_type_database sysname NULL,
                              user_type_schema sysname NULL,
                              user_type_name sysname NULL,
                              assembly_qualified_type_name nvarchar(4000),
                              xml_collection_id int NULL,
                              xml_collection_database sysname NULL,
                              xml_collection_schema sysname NULL,
                              xml_collection_name sysname NULL,
                              is_xml_document bit NOT NULL,
                              is_case_sensitive bit NOT NULL,
                              is_fixed_length_clr_type bit NOT NULL,
                              source_server sysname NULL,
                              source_database sysname NULL,
                              source_schema sysname NULL,
                              source_table sysname NULL,
                              source_column sysname NULL,
                              is_identity_column bit NULL,
                              is_part_of_unique_key bit NULL,
                              is_updateable bit NULL,
                              is_computed_column bit NULL,
                              is_sparse_column_set bit NULL,
                              ordinal_in_order_by_list smallint NULL,
                              order_by_list_length smallint NULL,
                              order_by_is_descending smallint NULL,
                              tds_type_id int NOT NULL,
                              tds_length int NOT NULL,
                              tds_collation_id int NULL,
                              tds_collation_sort_id tinyint NULL);
INSERT INTO #FirstResultSet
EXEC sys.sp_describe_first_result_set N'SELECT 1 AS one;';

SELECT [name] AS [Column],
       system_type_name AS DataType
FROM #FirstResultSet;

DROP TABLE #FirstResultSet;