我有一个 SP 会返回下一个代码。我将传递 TableName、IdentityColumnName、CodeColumn 和 ConditionColumn。很简单,我想将动态查询结果保存在一个变量中,这个查询将返回一个值给我。该 SP 将适用于 3 张桌子。问题是我的动态查询没有设置为@query
变量,任何帮助。
ALTER PROC [dbo].[usp_GetNextCode]
(
@IdColumnName nvarchar(20)= 'HeadId',
@CodeColumnName nvarchar(100)= 'HeadCode',
@TableName nvarchar(50)= 'Head',
@MaxColumnName varchar(50) = 'FamilyId',
@MaxColumnValue varchar(3) = 1
)
AS
BEGIN
DECLARE @query varchar(max) , @NewId VARCHAR(30),@LastCode varchar(30)
---First Get the Last Inserted Code and save it in a Variable..
SET @query = 'Select '+ @LastCode +'='+ @CodeColumnName +'
FROM Account.' + @TableName
+ ' Where ' + @IdColumnName + ' = (
SELECT MAX(' + @IdColumnName + ' )
FROM Account.' + @TableName +'
where '+ @MaxColumnName + ' = ' + @MaxColumnValue +' )'
Select @query
EXEC(@query)
Select @LastCode
END