无法拉出resetSet以便在存储过程中插入

时间:2016-04-12 10:53:32

标签: sql sql-server stored-procedures

我一直在网上寻找解决方案几天 我可能会问错误的问题。

我有以下存储过程,在向DB插入行时我想要返回输出int(@outResult)。这是存储过程:

USE [DB1]
GO
/****** Object:  StoredProcedure [dbo].[storedProc1]    Script Date: 04/12/2016 10:16:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[storedProc1]
    -- Add the parameters for the stored procedure here
    @inParam nvarchar(max),
    @outResult int = 0 OUTPUT
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    IF NOT EXISTS
    (
        SELECT ID
        FROM dbo.table1
        WHERE Field1 = @inParam 
    )
    Insert into [DB1].[dbo].[table1] 
    (
    Field1
    )
    Values (
    @inParam 
    )

    SET @outResult = SCOPE_IDENTITY()
END

当我运行以下SQL并尝试检索resultSet时:

SELECT * FROM (EXEC storedProc1 'field1')

我收到以下错误: "关键字' exec''"

附近的语法不正确

也许我从一开始就接近这个问题? 如果我找到一个,我会继续研究这个并提供解决方案。任何想法?

2 个答案:

答案 0 :(得分:3)

如果您只想检索out参数,那么您可以将其读作:

    DECLARE @output int
    EXEC storedProc1 'field1',@output OUTPUT 
    SELECT @output 

答案 1 :(得分:3)

要获取输出参数的值,需要使用输出参数提供对SP的调用。您可以通过在第二个参数上指定OUTPUT选项来实现。

 DECLARE @returned_ID INT; 
 EXEC storedProc1 @inParam = 'field1', 
                  @outResult = @returned_ID OUTPUT

 SELECT @returned_ID