CREATE PROCEDURE dbo.next_no
@clum varchar(10),
@btable varchar(10)
 AS
exec ('select top 1'+ @clum +'from '+@btable+'order by'+@clum+'desc')
GO
就单纯select top 1 psn from ink_deta order by psn desc这个语句是对的,可以查出PSN这行最大的数,我的存储过程EXEC NEXT_NO "PSN","INK_DETA"就不对了,哪写错了,请指教

解决方案 »

  1.   

    'select top 1'+ @clum +'from '+@btable+' order by '+@clum+' desc'注意留空格
      

  2.   

    EXEC NEXT_NO "PSN","INK_DETA"这里错了.EXEC NEXT_NO 'PSN','INK_DETA'双引号是用来定界对象的,比如表,字段,等等,用法跟[]一样.
    而你这里的参数是表名,字段名,它们在这里做字串用,而本身不是表和字段,所以不能用双引.
      

  3.   

    'select top 1 '+ @clum +' from '+@btable+' order by '+@clum+' desc'--lz居然一个空格都没有补
      

  4.   

    CREATE PROCEDURE dbo.next_no
    (
    @clum varchar(10),
    @btable varchar(10)
    )
    AS
    exec ('select top 1 ' + @clum + ' from '+ @btable + ' order by ' + @clum + 'desc')
    GO-----------------------------
    Execute next_no 'PSN','INK_DETA'