将dynamicSQL的结果导入到sql-server的variables中

在存储过程中执行dynamicSQL:

DECLARE @sqlCommand nvarchar(1000) DECLARE @city varchar(75) SET @city = 'London' SET @sqlCommand = 'SELECT COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75)', @city = @city 

如何在SP中使用count(*)列值作为返回值?

 DECLARE @sqlCommand nvarchar(1000) DECLARE @city varchar(75) declare @counts int SET @city = 'New York' SET @sqlCommand = 'SELECT @cnt=COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75),@cnt int OUTPUT', @city = @city, @cnt=@counts OUTPUT select @counts as Counts 

你可能试过这个,但是你的规格是否可以做到这一点?

 DECLARE @city varchar(75) DECLARE @count INT SET @city = 'London' SELECT @count = COUNT(*) FROM customers WHERE City = @city 
 DECLARE @sqlCommand nvarchar(1000) DECLARE @city varchar(75) DECLARE @cnt int SET @city = 'London' SET @sqlCommand = 'SELECT @cnt=COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75)', @city = @city RETURN @cnt 

dynamic版本

  ALTER PROCEDURE [dbo].[ReseedTableIdentityCol](@p_table varchar(max))-- RETURNS int AS BEGIN -- Declare the return variable here DECLARE @sqlCommand nvarchar(1000) DECLARE @maxVal INT set @sqlCommand = 'SELECT @maxVal = ISNULL(max(ID),0)+1 from '+@p_table EXECUTE sp_executesql @sqlCommand, N'@maxVal int OUTPUT',@maxVal=@maxVal OUTPUT DBCC CHECKIDENT(@p_table, RESEED, @maxVal) END exec dbo.ReseedTableIdentityCol @p_table='Junk' 

这可能是一个解决scheme?

 declare @step2cmd nvarchar(200) DECLARE @rcount NUMERIC(18,0) set @step2cmd = 'select count(*) from uat.ap.ztscm_protocollo' --+ @nometab EXECUTE @rcount=sp_executesql @step2cmd select @rcount 
  vMYQUERY := 'SELECT COUNT(*) FROM ALL_OBJECTS WHERE OWNER = UPPER(''MFI_IDBI2LIVE'') AND OBJECT_TYPE = ''TABLE'' AND OBJECT_NAME =''' || vTBL_CLIENT_MASTER || ''''; PRINT_STRING(VMYQUERY); EXECUTE IMMEDIATE vMYQUERY INTO VCOUNTTEMP ;