首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >T-SQL获取存储过程的SELECTed值

T-SQL获取存储过程的SELECTed值
EN

Stack Overflow用户
提问于 2010-05-21 17:45:00
回答 3查看 178.4K关注 0票数 97

在T-SQL中,这是允许的:

代码语言:javascript
复制
DECLARE @SelectedValue int
SELECT @SelectedValue = MyIntField FROM MyTable WHERE MyPrimaryKeyField = 1

因此,可以获取SELECT的值并将其填充到一个变量中(显然,前提是它是标量的)。

如果我将相同的select逻辑放入存储过程中:

代码语言:javascript
复制
CREATE PROCEDURE GetMyInt
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = 1

我可以获得这个存储过程的输出并将其填充到一个变量中吗?

类似于:

代码语言:javascript
复制
DECLARE @SelectedValue int
SELECT @SelectedValue = EXEC GetMyInt

(我知道上面的语法是不允许的,因为我试过了!)

EN

回答 3

Stack Overflow用户

发布于 2013-09-25 17:12:07

还有一种组合,您可以将返回值与记录集一起使用:

--存储过程--

代码语言:javascript
复制
CREATE PROCEDURE [TestProc]

AS
BEGIN

    DECLARE @Temp TABLE
    (
        [Name] VARCHAR(50)
    )

    INSERT INTO @Temp VALUES ('Mark') 
    INSERT INTO @Temp VALUES ('John') 
    INSERT INTO @Temp VALUES ('Jane') 
    INSERT INTO @Temp VALUES ('Mary') 

    -- Get recordset
    SELECT * FROM @Temp

    DECLARE @ReturnValue INT
    SELECT @ReturnValue = COUNT([Name]) FROM @Temp

    -- Return count
    RETURN @ReturnValue

END

-调用代码--

代码语言:javascript
复制
DECLARE @SelectedValue int
EXEC @SelectedValue = [TestProc] 

SELECT @SelectedValue

-结果--

票数 4
EN

Stack Overflow用户

发布于 2010-05-21 17:47:28

你需要使用返回值。

代码语言:javascript
复制
DECLARE @SelectedValue int

CREATE PROCEDURE GetMyInt (@MyIntField int OUTPUT)
AS
SELECT @MyIntField = MyIntField FROM MyTable WHERE MyPrimaryKeyField = 1

然后你这样叫它:

代码语言:javascript
复制
EXEC GetMyInt OUTPUT @SelectedValue
票数 3
EN

Stack Overflow用户

发布于 2012-09-11 21:04:17

试着这样做:

代码语言:javascript
复制
EXEC @SelectedValue = GetMyInt
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2881024

复制
相关文章

相似问题

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