我一直在网上寻找解决方案几天 我可能会问错误的问题。
我有以下存储过程,在向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''"
附近的语法不正确也许我从一开始就接近这个问题? 如果我找到一个,我会继续研究这个并提供解决方案。任何想法?
答案 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