不执行SQL语句或者存储过程如何得到结果的所有列名

嘻嘻哈哈精怪 2010-01-10 06:06:39
已知一个SQL查询语句,或者存储过程,不执行它,通过什么方法可以得到 查询结果的所有列名?
...全文
186 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhujiazhi 2010-01-10
  • 打赏
  • 举报
回复
select top 0 * from table
cuike519 2010-01-10
  • 打赏
  • 举报
回复
不执行SQL的话那就取到这个SQL,然后把Select和From之间的东西拿出来,在分析一下即可。

当然这是一种最简单的方式,要想很准确的读取,估计你要弄个简单的语法分析器(也许是一个复杂的正则表达式)。

one2zero 2010-01-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 alifriend 的回复:]
不执行基本不可能,你可以用变通的方法,比如通过传参使得查询结果的行数为0,where 1=2之类的
[/Quote]
这个说法比较好!
特别 2010-01-10
  • 打赏
  • 举报
回复
如果SQL语句SELECT的时候列出每一个字段名的话,当然可以分析出来
要不然就是数据库本身也得查系统表
你说你用一*,他知道有哪些字段啊,不查鬼知道
soaringbird 2010-01-10
  • 打赏
  • 举报
回复
菜不尝一尝怎么知道咸淡
SQL77 2010-01-10
  • 打赏
  • 举报
回复
要执行的要不然你能知道是哪表的?

SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID('TB')
wuyq11 2010-01-10
  • 打赏
  • 举报
回复
通过执行获取值
mngzilin 2010-01-10
  • 打赏
  • 举报
回复
必须执行
波导终结者 2010-01-10
  • 打赏
  • 举报
回复
不执行基本不可能,你可以用变通的方法,比如通过传参使得查询结果的行数为0,where 1=2之类的
满衣兄 2010-01-10
  • 打赏
  • 举报
回复
这个在sqlserver2000里可以通过sysobjects表来查询,好像是这个表。
http://edu.codepub.com/2009/0803/12003.php
嘻嘻哈哈精怪 2010-01-10
  • 打赏
  • 举报
回复
很简单,我只是想知道 执行一个SQL语句 的结果会有哪些列,而不想知道有哪些行。
有什么办法没?
满衣兄 2010-01-10
  • 打赏
  • 举报
回复
是不是我没看明白你的意图?我是不知道有什么方法的。

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧