declare @sql
set @sql = 'select columnName from tableName where id = 1'
exec(@sql)怎么获得exec的执行结果???????????
返回结果为char(8)
我该怎么获取这个值????????

解决方案 »

  1.   

    --参考:
    输出参数 
    declare @num int, @sqls nvarchar(4000) 
    set @sqls='select count(*) from tableName' 
    exec(@sqls) --如何将exec执行结果放入变量中? declare @num int, @sqls nvarchar(4000) 
    set @sqls='select @a=count(*) from tableName ' 
    exec sp_executesql @sqls,N'@a int output',@num output 
    select @num 
      

  2.   

    declare @sql nvarchar(1000)
    declare @ret varchar(1000)
    set @sql = N'select @ret = columnName from tableName where id = 1'
    sp_executesql @sql,N'@ret varchar(1000) out',@ret out
    select @ret
      

  3.   


    出现这个错误:
    服务器: 消息 214,级别 16,状态 2,过程 sp_executesql,行 19
    过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型。
      

  4.   

    declare @sql nvarchar(1000)
    declare @ret varchar(1000)
    set @sql = N'select @ret = ISNULL(@ret,'''')+columnName from tableName where id = 1'
    sp_executesql @sql,N'@ret varchar(1000) out',@ret out
    select @ret
      

  5.   

    declare @sql nvarchar(1000)
    declare @ret nvarchar(1000)
    set @sql = N'select @ret = ISNULL(@ret,'''')+columnName from tableName where id = 1'
    sp_executesql @sql,N'@ret nvarchar(1000) out',@ret out
    select @ret
      

  6.   

    declare @sql nvarchar(1000)
    declare @ret varchar(1000)
    set @sql = N'select @ret = ''1'''
    exec sp_executesql @sql,N'@ret varchar(1000) out',@ret out
    select @ret
      

  7.   

    'select columnName from tableName where id = 1'
    我主要是想判断一行中某个字段是否为空值
    有其他办法也可以等待。
      

  8.   

    case when columnName is null then '空' else '非空' end
      

  9.   

    create table ta(pid int identity(1,1),id char(4),col char(4))
    insert ta select 1,null
    insert ta select null,2
    declare @sql nvarchar(1000)
    declare @ret varchar(1000)
    set @sql = N'select @ret = isnull(id,''Null'') from ta where pid = 2'
    exec sp_executesql @sql,N'@ret varchar(1000) out',@ret out
    select @ret
    /*
    -------
    Null
    */
    (1 行受影响)
    drop table ta