Stored Procedures CASE 用法错误

create PROCEDURE USP_GetDetail(@ObjectName nvarchar(50))
as 
Begin 
    declare @type varchar(10)
    select @type=[type] from sys.objects with(nolock) where name=@ObjectName
    
    case @type
    WHEN 'U' THEN
        exec('select count(1) as 总行数 from ' + @ObjectName + ' with(nolock)'
        exec('select top 100 * from ' + @ObjectName + ' with(nolock)'
    WHEN 'P' THEN
        exec('sp_helptext '+ @ObjectName)
    WHEN 'FN' THEN
        exec('sp_helptext '+ @ObjectName)
    else
        select '不明对象,不能取出对应信息.' as ErrorMessage
    End    
End 

提示错误如下:

正确写法如下:

看看你知道问题错在哪里没有

create PROCEDURE USP_GetDetail(@ObjectName nvarchar(50))
as 
Begin 
    declare @type varchar(10)
    select @type=[type] from sys.objects with(nolock) where name=@ObjectName
    declare @str nvarchar(100)
    
    select @str = case @type
    WHEN 'U' THEN 
        'select count(1) as 总行数 from ' + @ObjectName + ' with(nolock)' + ' ' 
                        + 'select top 100 * from ' + @ObjectName + ' with(nolock)'
    WHEN 'P' THEN
        'sp_helptext '+ @ObjectName
    WHEN 'FN' THEN
        'sp_helptext '+ @ObjectName
    else
        'select '+ '''不明对象,不能取出对应信息.''' + ' as ErrorMessage'
    End    

    exec(@str)
End 
原文地址:https://www.cnblogs.com/Snowfun/p/3158631.html