我的存储过程具有相同的参数(服务器名称和日期)。我想编写一个存储过程并在该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”。
答案 0 :(得分:9)
我在这里看到两个问题:
@myDate
和@ServerName
,您尚未声明这些参数。通过在过程名称和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
答案 1 :(得分: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
答案 2 :(得分:1)
您正在以错误的方式执行存储过程
exec sp_1 @myDate datetime, @ServerName sysname
语法完全错误。
当你必须使用参数执行存储过程时,首先声明参数并传递它..
declare @myDate datetime
declare @ServerName sysname
exec sp_1 @myDate, @ServerName
这是正确的做法..