2017-11-16 5 views
1

私は何かが簡単でないと確信しています。私は私のデータオブジェクトのいくつかをマップすることを検討しています。私はsp_dependsの結果を挿入し、データ名を挿入するプロシージャを作成したいと思った。ここでシステムストアドプロシージャに変数を渡す

は、私が作成したものです:

create table DatasetMapping 
(
    Name nvarchar(257), 
    Type nvarchar(16), 
    updated nvarchar(7), 
    Selected nvarchar(8), 
    Column sysname 
); 

Insert into DatasetMapping 
    exec sp_depends 'dbo.PositionReport_Quote_V3_2016' 

これは、手動で素晴らしい作品。

私はその後

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE [dbo].[Repotingdatasets] 
AS 
    DECLARE @object NVARCHAR(257) 

    INSERT INTO DatasetMapping 
     EXEC sp_epends @objname = @object 

    EXEC [dbo].[Repotingdatasets] @object =' dbo.PositionReport_Quote_V3_2016'; 

を作成しましたが、私はエラーを取得:

Msg 8146, Level 16, State 2, Procedure Repotingdatasets, Line 0 [Batch Start Line 48]
Procedure Repotingdatasets has no parameters and arguments were supplied

+0

私はに@objectを渡すことができます私の挿入ステートメントとオブジェクト名として私のテーブルに追加します。ありがとう – user3798811

答えて

0

をあなたは変数を宣言しませんあなたがそれを渡すつもりなら、そのように。あなたはこのを探しています:

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE PROCEDURE [dbo].[Repotingdatasets] @object nvarchar(257) 
AS 
BEGIN 

INSERT INTO DatasetMapping 
EXEC sp_depends @[email protected] 

END 

その後..

EXEC [dbo].[Repotingdatasets] @object =' dbo.PositionReport_Quote_V3_2016'; 

を使用すると、デフォルトの値が同じ場所に追加したい場合:

CREATE PROCEDURE [dbo].[Repotingdatasets] @object nvarchar(257) = 'default' 
0

あなただけのいくつかの構文を変更する必要があります。

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
create PROCEDURE [dbo].[Repotingdatasets]( 
@object  nvarchar(257) 
) 
as 

Insert into DatasetMapping 
exec sp_depends @[email protected] 

exec [dbo].[Repotingdatasets] @object =' dbo.PositionReport_Quote_V3_2016';