--我想用@MAXNUM接收EXEC返回的值,exec是执行语句有返回值码?或者上面的查询要怎么修改
--@MAXNUM=EXEC(' SELECT  @MaxNum =MAX( CONVERT(int,RIGHT(FCustomerCoding,2)) ) FROM TCustomerInfo 
--  WHERE LEN(FCustomerCoding)=5 AND FCustomerCoding IKE '''+@CustomerCodingPY+'%'' ')------------------------------------------------------------
declare @s nvarchar(1000)
set @s  = ' SELECT  @MaxNum =MAX( CONVERT(int,RIGHT(FCustomerCoding,2)) ) FROM TCustomerInfo  WHERE LEN(FCustomerCoding)=5 AND FCustomerCoding LIKE '''+@CustomerCodingPY+'%'' 'exec sp_executesql @s,N'@maxnum int output',@maxnum outIF @MAXNUM > 0
  BEGIN
    SELECT CASE LEN(@MAXNUM) 
           WHEN 1 THEN  '00'+Convert(char(3),@MAXNUM+1) 
           WHEN 2 THEN  '0'+Convert(char(3),@MAXNUM+1) 
           WHEN 3 THEN  Convert(char(3),@MAXNUM+1) ELSE  '001' END
  END
ELSE
  BEGIN     
    SELECT '001'
  END

解决方案 »

  1.   

    DECLARE @MaxNum int
    DECLARE @CustomerCodingPY char(20)
    SET @CustomerCodingPY='HX'
    SELECT  @MaxNum =MAX( CONVERT(int,RIGHT(FCustomerCoding,2)) )
    FROM #TCustomerInfo
    WHERE LEN(FCustomerCoding)=5 AND FCustomerCoding LIKE '+@CustomerCodingPY+'%
      

  2.   

    DECLARE @CustomerCodingPY char(20)
    应该改成
    DECLARE @CustomerCodingPY varchar(20)
      

  3.   

    --这样应该也可以
    DECLARE @MaxNum int
    DECLARE @CustomerCodingPY varchar(20)
    SET @CustomerCodingPY='HX%'
    SELECT  @MaxNum =MAX( CONVERT(int,RIGHT(FCustomerCoding,2)) )
    FROM #TCustomerInfo
    WHERE LEN(FCustomerCoding)=5 AND FCustomerCoding LIKE @CustomerCodingPY
      

  4.   

    非常谢谢happyflystone  
    我自己也范了个错 把条件定义成了char类型了
      

  5.   

    是可以 不过 happyflystone 方法 我更喜欢