22,210
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE #TCustomerInfo
(
FCustomerCoding varchar(10)
)
INSERT INTO #TCustomerInfo
SELECT 'HX00001'
UNION ALL SELECT 'HX001'
UNION ALL SELECT 'HX002'
UNION ALL SELECT 'ZJ001'
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
--我想用@MAXNUM接收EXEC返回的值,exec是执行语句有返回值码?或者上面的查询要怎么修改
--@MAXNUM=EXEC(' SELECT @MaxNum =MAX( CONVERT(int,RIGHT(FCustomerCoding,2)) ) FROM TCustomerInfo
-- WHERE LEN(FCustomerCoding)=5 AND FCustomerCoding LIKE '''+@CustomerCodingPY+'%'' ')
IF @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
DROP TABLE #TCustomerInfo
--这样应该也可以
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
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+'%
--我想用@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 out
IF @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