zoukankan      html  css  js  c++  java
  • SQL Server ->> WITH RESULT SETS子句

    SQL Server 2012对EXECUTE子句引入了WITH RESULT SETS选项,用于对EXECUTE语句执行的存储过程或者动态语句结果进行一个指定数据类型的转换,这样可以避免一种情况就是需要用临时表存储后再转换成目标表的数据字段类型,或者需要用OPENQUERY去转换。

    用法:

    IF EXISTS(SELECT * FROM sys.procedures WHERE name = 'usp_TestWithResultSets' AND schema_id = schema_id('dbo'))
        DROP PROCEDURE dbo.usp_TestWithResultSets
    GO
    
    CREATE PROCEDURE dbo.usp_TestWithResultSets
    AS
    BEGIN
    
    SET NOCOUNT ON
    
    SELECT Num AS INT_COL, CHAR(NUM+64) AS STR_COL
    FROM dbo.Numbers
    WHERE NUM<=26
    
    END
    GO
    
    EXEC dbo.usp_TestWithResultSets
    WITH RESULT SETS
    (
        (
            COL1 INT NOT NULL,
            COL2 INT NOT NULL
        )
    )

    上面结果会报错,因为类型无法转换成功

    Msg 8114, Level 16, State 2, Procedure usp_TestWithResultSets, Line 25
    Error converting data type char(1) to int.

    执行计划并没有多出类型转换多出的操作符/步骤

    那么这种转换会不会多出很多CPU时间呢,毕竟要转换。那我们把行数调整为10000行来观察下

    没有加上WITH RESULT SETS

    SQL Server parse and compile time: 
       CPU time = 0 ms, elapsed time = 0 ms.
    SQL Server parse and compile time: 
       CPU time = 0 ms, elapsed time = 0 ms.
    
     SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 0 ms.
    
     SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 173 ms.
    
     SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 173 ms.

    加上WITH RESULT SETS

    SQL Server parse and compile time: 
       CPU time = 0 ms, elapsed time = 0 ms.
    SQL Server parse and compile time: 
       CPU time = 0 ms, elapsed time = 0 ms.
    
     SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 0 ms.
    
     SQL Server Execution Times:
       CPU time = 125 ms,  elapsed time = 384 ms.
    
     SQL Server Execution Times:
       CPU time = 125 ms,  elapsed time = 384 ms.
  • 相关阅读:
    IE6-IE11兼容性问题列表及解决办法
    EJB--事务管理 .
    JDBC批处理---(java 对数据库的回滚) .
    redisb并发访问慢出现的问题
    redis其他问题
    多线程实现服务器端接收连接
    序列化作用
    redis的key过期时间
    nginx负载均衡和反向代理有什么区别
    nginx的负载均衡和反响代理配置
  • 原文地址:https://www.cnblogs.com/jenrrychen/p/5165036.html
Copyright © 2011-2022 走看看