2014-09-02 136 views
0

预测我不太了解SQL:我有一个名为“MY_TABLE”的表,我想将包含在此表中的所有字段名称检索到列表中。 通过网络走我发现这个代码片段:获取表中所有字段名称的列表

SELECT column_name 
FROM information_schema.columns 
WHERE table_name = 'MY_TABLE' 

小艾直着我,我的期望是,如列表:

FIELD_1 
FIELD_2 
... 
FIELD_n 

但是当我尝试执行此查询到我的查询分析器中我收到以下错误消息:

>[Error] Script lines: 1-3 -------------------------- 
information_schema.columns not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output). 
Msg: 208, Level: 16, State: 1 
Server: JUMBO, Line: 1 

任何帮助?

+0

您正在使用什么版本的Sybase? – 2014-09-02 13:09:40

+0

我想是12.5.4 – 2014-09-02 13:14:47

回答

0

我想这可能取决于哪的Sybase的版本,您正在使用,但根据对ASE 12.5您可能需要使用系统表Sybase文档是:

syscolumnssysobjects

系统对象包含一个行对于每个表,视图,存储过程, 扩展存储过程,日志,规则,缺省值,触发器,检查 约束,参照约束,和(仅在tempdb)临时 对象。

syscolumns对于每个表和视图中的每列都包含一行, 和过程中每个参数的一行。

您想查询大概是这样的:

select c.name from syscolumns c 
inner join sysobjects o on c.id = o.id 
where o.name = 'MY_TABLE' 
+0

非常感谢!这工作完美。在'sys.columns'建议之后,我能够从这个[reference](http://dba.fyicenter.com/faq/sql_server/sys.columns_Getting_a_List_of_Columns_in_a_Table.html)开始构建几乎相同的查询,但是您的代码给出了我正是我需要的。谢谢!!! – 2014-09-02 13:30:58

+0

@MatteoNNZ高兴地帮助:) – jpw 2014-09-02 13:31:21

0

它非常简单。您可以在错误中看到,该模式作为您在查询中使用的列的别名是错误的。请再次检查模式名称。其他可能性是正确检查列名,重要的是检查架构的权限,无论您是否有权在该架构中执行查询(R/W/X)。