利用sp_columns或syscolumns,sysobjects组成的SQL语句获取数据表的字段名

:sp_columnsSQL自带存储过程

(1)

例如我想得到authors表中各列的定义:

use pubs

exec sp_columns 'authors' --返回这个表各列定义的一些记录集.

我想直接用SELECT语句使用存储过程的记录集.但是这样写是错误的:

SELECT top 10 * FROM ( exec sp_columns 'authors' )

当然,如果我预先定义一个表TableColumns,那么如下写是可以的:

INSERT TableColumns

exec sp_columns 'authors'

(2)syscolumns为数据表字段内容 sysobjects为数据表内容

直接用SELECT语句吗?如果行,如何写?谢谢!

回复(1):

select top 10 a.* from syscolumns a join sysobjects b on a.id=b.id

where b.name='authors'

回复(2):

回复:如何使用SELECT处理存储过程返回的记录集

select *

FROM OPENROWSET('SQLOLEDB','SQLServerName;'sa';'',

'sp_lock')

select *

FROM OPENROWSET('SQLOLEDB','SQLServerName;'sa';'',

'exec sp_columns ''authors'' ')

select *

FROM OPENROWSET('SQLOLEDB','SQLServerName;'sa';'',

'sp_columns ''authors'' ')

你可能感兴趣的:(sql)