2013-07-01 14 views
7

同じパラメータ(サーバー名と日付)を持つプロシージャを格納しています。ストアドプロシージャを作成し、そのSP(SP_Allと呼ばれます)にExecを実行したいと思います。ストアドプロシージャ内でストアドプロシージャを呼び出す方法(2つのパラメータを使用)

CREATE PROCEDURE [dbo].[SP_All] 
AS 
BEGIN 
exec sp_1 @myDate datetime, @ServerName sysname 
exec sp_2 @myDate datetime, @ServerName sysname 
exec sp_3 @myDate datetime, @ServerName sysname 
exec sp_4 @myDate datetime, @ServerName sysname 
END 
Go 

エラー:スカラー変数 "@myDate"を宣言する必要があります。

+1

プットパラメータ/ @ MyDateに該当日時、/ @サーバー名sysname – chetan

+4

サイドノート:ストアドプロシージャのプレフィックス 'sp_'を**使用しないでください**。マイクロソフトは、[*ストアドプロシージャの名前付け*を参照してください](http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx)、およびあなたはいつか名前衝突のリスクを将来実行します。 [ストアドプロシージャのパフォーマンスにも悪い](http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix)単に 'sp_'を避け、他の何かを接頭辞として使うのが最善です。 –

+1

あなたの質問は基本的なものですが、完全なコード例を追加するための+1、完全なエラーメッセージ、およびコードが何をすべきかについての説明。あまりにも多くの質問には、これらのうちの少なくとも1つが欠けています。 – Heinzi

答えて

6

を私はここで二つの問題を参照してください。あなたの手順は明らかにあなたがまだ宣言されていない2つのパラメータ@myDate@ServerNameを取る

  1. を。プロシージャー名とASの間に名前とタイプを追加してください。
  2. sp_1をsp_4に呼び出すときに、パラメータのデータ型を再度指定する必要はありません(宣言によって処理されました。ポイント1を参照)。

    CREATE PROCEDURE [dbo].[SP_All] 
        @myDate datetime, 
        @ServerName sysname 
    AS 
    BEGIN 
        exec sp_1 @myDate, @ServerName 
        exec sp_2 @myDate, @ServerName 
        exec sp_3 @myDate, @ServerName 
        exec sp_4 @myDate, @ServerName 
    END 
    
+0

親愛なるHeinzi、marc_s、Devartさんのコメントありがとうございます。それは今働きます!私はそれが基本的な質問であることを知っています。私はあなたのような専門家になることを願っています。もう一度ありがとう。 – Raha

3

はこのお試しください -

CREATE PROCEDURE [dbo].[SP_All] 

     @myDate DATETIME 
    , @ServerName SYSNAME 

AS BEGIN 

    EXEC dbo.sp_1 @myDate, @ServerName 
    EXEC dbo.sp_2 @myDate, @ServerName 
    EXEC dbo.sp_3 @myDate, @ServerName 
    EXEC dbo.sp_4 @myDate, @ServerName 

END 
1

あなたは

exec sp_1 @myDate datetime, @ServerName sysname 

は完全に間違っ構文でストアドプロシージャに間違った方法を実行しています。

あなたは...まず、パラメータを持つストアドプロシージャを実行し、パラメータを宣言し、それを渡すために持っている場合

declare @myDate datetime 
declare @ServerName sysname 

exec sp_1 @myDate, @ServerName 

これは正しいアプローチ..です

+0

ここでは誤解があります。私は他のSPのすべてのパラメータを宣言し、今はそれらを実行するだけでした。 HeinziとDevartの答えは正しいです。 – Raha

関連する問題