首页 > 解决方案 > 将结果集限制为第一行中第一列的值?

问题描述

我正在使用 Microsoft SQL Server 2016。

我有一个动态 SQL 情况,其中传入的查询可能是 SQL 命令,也可能是存储过程。我需要能够获取结果集左上角的第一个值。我已经找到了一种方法来为 SQL 做到这一点,但不是为存储过程。

对于 SQL 脚本,我sp_describe_first_result_set用来确定有多少列,并生成一个包含空列的匹配脚本以联合起来,如下所示:

select null as C1, null as C2 where 1=0 union all select 'hello', 'world'

这使得获取top 1 C1.

但是,对于存储过程,我不能使用相同的技术,因为有时存储过程具有不同的返回路径,这会导致sp_describe_first_result_set. 我无法将结果集插入到临时表中,因为我不知道有多少列或列是什么。

标签: sql-servertsqlstored-proceduressql-server-2016dynamic-sql

解决方案


推荐阅读