zoukankan      html  css  js  c++  java
  • SQL server 动态SQL对变量讲行赋值

    执行如下SQL

    declare @t int
    exec('set @t=1')
    print(@t)

    报如下错误!
    服务器: 消息 137,级别 15,状态 2,行 1
    必须声明变量
    '@t'

     

     实际就是变量与动态语句不能共享,

    那么换成这样就行,

    declare @t int
    set @t=1
    print(@t)


    exec('declare @t int;
    set @t=1;
    print(@t)
    ')


    但是有时候你一定要,变量与动态SQL结合起来。
    比如,你在存储过程中定义一个输出参数,◎COUNT int output
    而你在获得这个值的最好的方法就是动态SQL,那么有什么好的方式吗?
    那就要用到系统存储过程,sp_executesql

     
             
    declare @sql2 nvarchar(500)
               
    set @sql2 = 'select @COUNT = count(distinct('+@groupby+')) from TG_ENTRY where '+@sqlWhere
        
    execute sp_executesql 
              
    @sql2,
              N
    '@COUNT int output',
              
    @TOTAL_COUNT output
  • 相关阅读:
    290. Word Pattern
    283. Move Zeroes
    278. First Bad Version
    276. Paint Fence
    270. Closest Binary Search Tree Value
    [jobdu]二进制中1的个数
    [jobdu]丑数
    Skip List
    [wikioi]没有上司的舞会
    POJ3984 迷宫问题
  • 原文地址:https://www.cnblogs.com/luluping/p/1530521.html
Copyright © 2011-2022 走看看