2016-04-12 9 views
1

解決策を見つけるために数日間オンラインで探していましたが、間違った質問をしている可能性があります。 ストアドプロシージャ内に挿入するresetSetを取り出せません

私は以下のストアドプロシージャを持っています.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を実行し、結果セットを取得しようとすると: 「不適切な構文のキーワードの近くに 『execを』:

SELECT * FROM (EXEC storedProc1 'field1') 

私は次のエラーを取得します"

多分私は最初からこの問題に近づいていますか? 私はこれを調べて解決策を提供します。もし私が見つけたら、どんな考えですか?

+0

selectで参照する場合は、ストアドプロシージャではなくテーブル値関数を使用する必要があります。これは実際の解決策ではないかもしれないことに注意してください。なぜなら、 'OUT'パラメータの使い方を知りたいからです。 –

+0

はい、私はちょうどoutパラメータにアクセスしたいので、私の選択は間違ったアプローチですか? –

答えて

3

。 2番目のパラメータにOUTPUTオプションを指定することでそれを行います。

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

SELECT @returned_ID 
+0

完璧!それでおしまい!私の髪を裂くことからありがとう! :) –

3

あなただけのoutパラメータを取得したい場合は、あなたのようにそれを読むことができます:あなたは出力引数でSPへの呼び出しを提供する必要があり、出力パラメータの値を取得するには

DECLARE @output int 
    EXEC storedProc1 'field1',@output OUTPUT 
    SELECT @output 
関連する問題