Sql 将查询转换为存储过程
我有一个问题是这样的(人们可能会畏缩,但试着忽略它有多糟糕): 因此,我想将其设置为存储过程,因此我尝试了以下方法:Sql 将查询转换为存储过程,sql,sql-server,tsql,sql-server-2005,stored-procedures,Sql,Sql Server,Tsql,Sql Server 2005,Stored Procedures,我有一个问题是这样的(人们可能会畏缩,但试着忽略它有多糟糕): 因此,我想将其设置为存储过程,因此我尝试了以下方法: USE [INTRANET] GO /****** Object: StoredProcedure [dbo].[BusinessHours] Script Date: 06/21/2013 15:19:47 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[
USE [INTRANET]
GO
/****** Object: StoredProcedure [dbo].[BusinessHours] Script Date: 06/21/2013 15:19:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[BusinessHours]
@meeting_date DATETIME,
@meeting_time DATETIME
AS
DECLARE @submit_day DATETIME;
DECLARE @submit_time DATETIME;
DECLARE @start_time_of_business_day DATETIME;
DECLARE @business_day_hours FLOAT;
DECLARE @num1 FLOAT
DECLARE @num2 FLOAT
DECLARE @num3 FLOAT
SET @submit_day = CONVERT(VARCHAR(10),GETDATE(),101);
SET @submit_time = CONVERT(VARCHAR(8),GETDATE(),108);
SET @start_time_of_business_day = '09:00';
SET @business_day_hours = 8.5;
SET @num1 = ((DATEDIFF(dd, @submit_day, @meeting_day))
-(DATEDIFF(wk, @submit_day, @meeting_day) * 2)
-(CASE WHEN DATEPART(dw, @submit_day) = 1 THEN 1 ELSE 0 END)
-(CASE WHEN DATEPART(dw, @meeting_day) = 7 THEN 1 ELSE 0 END)
-(SELECT COUNT(*) FROM intranet.dbo.bank_holiday WHERE the_date BETWEEN @submit_day AND @meeting_day)) * @business_day_hours
SET @num2 = (select datediff(minute, @start_time_of_business_day, @submit_time)) / 60.0
SET @num3 = (select datediff(minute, @start_time_of_business_day, @meeting_time)) / 60.0
select @num1 - @num2 + @num3 as [hours]
这给了我一个错误:
Msg 137,第15级,状态2,程序营业时间,第25行必须声明标量变量“@meeting_day”。
Msg 137,第15级,状态2,程序营业时间,第29行
必须声明标量变量“@meeting_day” 已尝试搜索,但无法确定如何使其工作。您在参数声明中键入了“meeting\u date”而不是“meeting\u day”
CREATE PROCEDURE [dbo].[BusinessHours]
@meeting_day DATETIME, --ERROR IS HERE
@meeting_time DATETIME
AS
您在参数声明中键入了“meeting_date”而不是“meeting_day”
CREATE PROCEDURE [dbo].[BusinessHours]
@meeting_day DATETIME, --ERROR IS HERE
@meeting_time DATETIME
AS
对。您已将
DECLARE
d变量@meeting\u day
重命名为参数@meeting\u date
解决这个问题。是的。您已将
DECLARE
d变量@meeting\u day
重命名为参数@meeting\u date
解决这个问题。你在哪里宣布了“@meeting\u day”?你在哪里宣布了“@meeting\u day”?