python执行sql语句后的返回信息_获取从SQL语句返回的列

有没有办法获取SQL查询将返回的列而不实际执行SQL语句?

我调查了使用set showplan_all并使用OutputList字段,但结果并不是我想要的.我需要以正确的顺序和正确的列名称(如果它们是否别名)获取列.

我正在使用SQL Server 2008 R2.

为了澄清,这是一个可以运行的查询示例:

--log that the user has executed a query

insert into execution_log_table

(timestamp

,user_id

,report_id)

values (CURRENT_TIMESTAMP

,1234

,5678)

select *

from (select column1

,column2

from another_table) tbl

在尝试获取返回的列时,我不想在第一个表中插入任何内容.

*注意:这只是一个简单的例子,我有一些SQL语句,它们是数百行代码,可以执行多个crud操作.我知道我可以尝试手动解析代码行,但我的问题是针对使用SQL服务器解析器确定哪些列将在最终select语句中返回的方法.

最佳答案

SET FMTONLY ON.它“返回”空结果集,但不应影响任何实际表:

set fmtonly on

go

insert into execution_log_table

([timestamp]

,user_id

,report_id)

values (CURRENT_TIMESTAMP

,1234

,5678)

select *

from (select column1

,column2

from another_table) tbl

顺便说一句,记得在为任何其他活动使用相同的连接之前将其关闭(在其自己的批次中使用SET FMTONLY OFF),否则您可能会混淆一段时间. (正如我在尝试创建表来测试您的批处理语句时所做的那样,忘记了一旦FMTONLY打开,CREATE TABLE本身就会无声地失败(带有成功消息).

我刚刚注意到这个功能似乎已被弃用,并且替换只允许您检索有关第一个结果集的信息.面对复杂的查询有什么用?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值