Sql server 检索所选列的数据类型
是否有方法从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
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;