同じパラメーター(サーバー名と日付)を持つストアドプロシージャがあります。ストアドプロシージャを記述して、そのSP(SP_Allと呼ばれる)で実行します。
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"を宣言する必要があります。
ここに2つの問題があります。
@myDate
と@ServerName
の2つのパラメータを受け取りますが、これらはまだ宣言していません。これを行うには、プロシージャ名とASの間に名前とタイプを追加します。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
これを試してください-
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
ストアドプロシージャを間違った方法で実行している
exec sp_1 @myDate datetime, @ServerName sysname
構文は完全に間違っています。
パラメータを使用してストアドプロシージャを実行する必要がある場合は、最初にパラメータを宣言して渡します。
declare @myDate datetime
declare @ServerName sysname
exec sp_1 @myDate, @ServerName
これが正しいアプローチです。