构造成一个串.
exec (@sql) 来执行.

解决方案 »

  1.   

    declare @sFieldName varchar(100),@sMaxBillCode varchar(100)
    declare @TableName varchar(100),@sField varchar(100),@sLikeValue varchar(100)
    ...
    declare @s nvarchar(8000)
    set @s = ''
    select @s = @s+ N' select @sMaxBillCode = Max('+@sFieldName+N')'
                  + N' from '+@sTableName 
                  + N' where '+@sField+N' like ''' + @sLikeValue + N''''
    exec sp_executesql @s,N'@sMaxBillCode varchar(100) out',@sMaxBillCode out
    select @sMaxBillCode 
      

  2.   


    create procedure sp_getMax
    (@sTableName varchar(200),@sField varchar(200),@sLikeValue varchar(200),@sFieldName varchar(200),@sMaxBillCode varchar(200) output)
    asdeclare @sql nvarchar(4000)
    set @sql='select @sMaxBillCode=max('+@sFieldName+') from ['+@stablename+'] where '+@sField+' like '''+@sLikeValue+''''
    print @sql
    exec sp_executesql @sql,N'@sMaxBillCode varchar(200) output',@sMaxBillCode outputgo
    --调用
    declare @sMaxBillCode varchar(200)
    exec sp_getMax 'test_a','a','%','b',@sMaxBillCode output
    select @sMaxBillCode
      

  3.   

    create procedure p
    @sTableName varchar(20),
    @sFieldName varchar(20),
    @sField varchar(20),
    @sLikeValue varchar(100),
    @sMaxBillCode int output
    as
    declare @sql nvarchar(1000)
    set @sql='select @sMaxBillCode = Max('+@sFieldName+')'+
             N'from '+@sTableName+
             N'where '+@sField+' like ''%''+@sLikeValue + ''%'''
    exec sp_executesql @sql,
                       N'@sMaxBillCode int output,@sLikeValue varchar(100)',
                       @sMaxBillCode output,@sLikeValuego
      

  4.   

    --忘记%了。
    create procedure sp_getMax
    (@sTableName varchar(200),@sField varchar(200),@sLikeValue varchar(200),@sFieldName varchar(200),@sMaxBillCode varchar(200) output)
    asdeclare @sql nvarchar(4000)
    set @sql='select @sMaxBillCode=max('+@sFieldName+') from ['+@stablename+'] where '+@sField+' like ''%'+@sLikeValue+'%'''
    print @sql
    exec sp_executesql @sql,N'@sMaxBillCode varchar(200) output',@sMaxBillCode outputgo
    --调用
    declare @sMaxBillCode varchar(200)
    exec sp_getMax 'test_a','a','%','b',@sMaxBillCode output
    select @sMaxBillCode
      

  5.   

    declare @sFieldName varchar(100)
          , @sMaxBillCode varchar(100)
          , @sTableName varchar(100)
          , @sField varchar(100)
          , @sLikeValue varchar(100)
          , @sSQL nvarchar(4000)set @sSQL = ''
    set @sFieldName = 'DPTNO'
    set @sTablename ='BASDEPT'
    set @sField = 'DPTNO'
    set @sLikeValue = '%'select @sSQL = @sSQL + N' select @sMaxBillCode = Max('+@sFieldName+N')'
                         + N' from '+ @sTableName 
                         + N' where '+ @sField + N' like ''' + @sLikeValue + N''''exec sp_executesql @sSQL,N'@sMaxBillCode varchar(100) out',@sMaxBillCode = @sMaxBillCode out select @sMaxBillCode