在T-SQL中,这是允许的:
DECLARE @SelectedValue int
SELECT @SelectedValue = MyIntField FROM MyTable WHERE MyPrimaryKeyField = 1
因此,可以获取SELECT的值并将其填充到一个变量中(显然,前提是它是标量的)。
如果我将相同的select逻辑放入存储过程中:
CREATE PROCEDURE GetMyInt
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = 1
我可以获得这个存储过程的输出并将其填充到一个变量中吗?
类似于:
DECLARE @SelectedValue int
SELECT @SelectedValue = EXEC GetMyInt
(我知道上面的语法是不允许的,因为我试过了!)
发布于 2013-09-25 17:12:07
还有一种组合,您可以将返回值与记录集一起使用:
--存储过程--
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
-调用代码--
DECLARE @SelectedValue int
EXEC @SelectedValue = [TestProc]
SELECT @SelectedValue
-结果--
发布于 2010-05-21 17:47:28
你需要使用返回值。
DECLARE @SelectedValue int
CREATE PROCEDURE GetMyInt (@MyIntField int OUTPUT)
AS
SELECT @MyIntField = MyIntField FROM MyTable WHERE MyPrimaryKeyField = 1
然后你这样叫它:
EXEC GetMyInt OUTPUT @SelectedValue
发布于 2012-09-11 21:04:17
试着这样做:
EXEC @SelectedValue = GetMyInt
https://stackoverflow.com/questions/2881024
复制相似问题