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 

提示错误如下:

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
     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 

 

你可能感兴趣的:(procedure)