sql-server-2012 - 此执行语句在 SQL Server 2012 中如何工作

标签 sql-server-2012

我得到了 SQL Server 2012 中新执行语句的片段。在研究它之后我有些困惑。请看一下

 EXEC sproc_GETSTUDENT 
 WITH RESULT SETS 
 ( 
      ( 
             STUDENTROLLNO  INT,
             NAMEOFSTUDENT  VARCHAR(50)
      ) 
 );

这是做什么的?

它是否执行存储过程并将数据填充到结果表中?

由于使用了with关键字,结果是临时表或CTE。我们知道我们在 CTE 时使用了 with 关键字。所以请解释一下当上面的片段运行时会发生什么。谢谢

最佳答案

它记录在EXECUTE (Transact-SQL)中用于描述结果集。

在您的情况下,执行该语句时您将获得两列。一个名为 STUDENTROLLNOint 列和一个名为 NAMEOFSTUDENTvarchar(50) 列。

使用此存储过程:

CREATE PROCEDURE sproc_GETSTUDENT AS
SELECT 1 AS C1, 'Pelle' AS X1

你会得到

C1          X1
----------- -----
1           Pelle

如果您使用EXEC sproc_GETSTUDENT执行该过程

但是如果你这样做

EXEC sproc_GETSTUDENT 
 WITH RESULT SETS 
 ( 
      ( 
             STUDENTROLLNO  INT,
             NAMEOFSTUDENT  VARCHAR(50)
      ) 
 );

你会得到这样的结果集。

STUDENTROLLNO NAMEOFSTUDENT
------------- --------------------------------------------------
1             Pelle

关于sql-server-2012 - 此执行语句在 SQL Server 2012 中如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20682059/

相关文章:

azure - SSMS 对象资源管理器上未显示数据库

mysql - 如何在 Sql-server 中对按日期分组的时间求和

sql-server - SQL Server 中旧的 row_number() 和新的基于 OFFSET + FETCH 的分页之间有什么区别?

sql-server - 相同的架构安装,为什么,我该如何解决?

SQL查询按时间对项目进行分组,但前提是彼此靠近?

sql-server - 如何计算出存储过程返回了多少数据?

sql - 带主键 ID 的批量插入

sql - 如何替换精确的字符串

sql - 在 WHERE 子句中应用条件过滤

sql-server - 在 SQL Server 2012 中获取总计数和分页的更好方法