首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取动态SQL的结果到sql-server的变量中

获取动态SQL的结果到sql-server的变量中
EN

Stack Overflow用户
提问于 2010-10-01 23:39:17
回答 6查看 185.5K关注 0票数 130

在存储过程中按如下方式执行动态SQL:

代码语言:javascript
复制
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(*)列值作为返回值?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-10-01 23:43:45

代码语言:javascript
复制
DECLARE @sqlCommand NVARCHAR(1000)
DECLARE @count INT
DECLARE @city VARCHAR(75)
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 = @count OUTPUT

SELECT @count
票数 230
EN

Stack Overflow用户

发布于 2016-10-21 16:04:58

动态版本

代码语言:javascript
复制
    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'
票数 3
EN

Stack Overflow用户

发布于 2010-10-01 23:41:26

您可能已经尝试过了,但是您的规范是否允许这样做呢?

代码语言:javascript
复制
DECLARE @city varchar(75)
DECLARE @count INT
SET @city = 'London'
SELECT @count = COUNT(*) FROM customers WHERE City = @city
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3840730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档