尝试创建存储过程 [英] Trying to create a stored procedure

查看:94
本文介绍了尝试创建存储过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿伙计我需要你的帮助,我正在尝试创建一个存储过程,但我不知道为什么MSQl Management Studio会抱怨这个查询。



错误消息:消息102,级别15,状态1,过程Consolidate_Time_From_THQ,第1行

'Consolidate_Time_From_THQ'附近的语法不正确。



Hey guys i need your help, i am trying to create a stored procedure, but i dont know why MSQl Management Studio is complaining about this query.

Error Msg:Msg 102, Level 15, State 1, Procedure Consolidate_Time_From_THQ, Line 1
Incorrect syntax near 'Consolidate_Time_From_THQ'.

CREATE Procedure Consolidate_Time_From_THQ



DECLARE @start DATE,  @end DATE
DECLARE @tbl TABLE 
([userid] uniqueidentifier
,[userObjname] nvarchar(255)
,[chargedToid] uniqueidentifier
,[chargedToObjtype] tinyint
,[chargeToObjname] nvarchar(255)
,[chargedToProjectid] uniqueidentifier
,[totalBillableSeconds] int
,[totalNonBillableSeconds] int
,[totalSeconds] int
,[effectiveDate] datetime)
INSERT @tbl


SELECT 
dbo.timesheet.userid, 
dbo.THQ_Objects.objname AS userObjname, 
dbo.timesheetDetail.chargedToid, 
THQ_Objects_1.objtype AS chargedToObjtype, 
THQ_Objects_1.objname AS chargeToObjname, 
CASE THQ_Objects_1.objtype 
WHEN 1 THEN dbo.timesheetDetail.chargedToid 
WHEN 2 THEN
(SELECT projectid
FROM dbo.task
WHERE objid = dbo.timesheetDetail.chargedToid) 
ELSE NULL 
END AS chargedToProjectid, 
SUM(dbo.timesheetDetail.totalBillableSeconds) AS totalBillableSeconds, 
SUM(dbo.timesheetDetail.totalNonBillableSeconds) AS totalNonBillableSeconds, 
SUM(dbo.timesheetDetail.totalSeconds) 
AS totalSeconds, MIN(dbo.timesheetDetail.effectiveDate) AS effectiveDate
FROM dbo.timesheetDetail INNER JOIN
dbo.timesheet ON dbo.timesheetDetail.sheetid = dbo.timesheet.objid INNER JOIN
dbo.THQ_Objects ON dbo.timesheet.userid = dbo.THQ_Objects.objid INNER JOIN
dbo.THQ_Objects AS THQ_Objects_1 ON dbo.timesheetDetail.chargedToid = THQ_Objects_1.objid
WHERE (dbo.THQ_Objects.deleted = 0) AND (THQ_Objects_1.deleted = 0)

GROUP BY dbo.timesheetDetail.chargedToid, dbo.timesheet.userid, dbo.THQ_Objects.objname, THQ_Objects_1.objname, THQ_Objects_1.objtype
order by effectiveDate desc

SELECT UserObjname as 'Resource', EffectiveDate, (SELECT objname FROM thq_Objects o WHERE o.objid = result.chargedToProjectid) as 'ProjectName', (SELECT objname FROM thq_Objects o WHERE o.objid = result.chargedToid) as 'Project/Task Name', TotalBillableSeconds, TotalNonBillableSeconds, TotalSeconds
FROM @tbl result
WHERE effectiveDate BETWEEN @start AND @end
Order By UserObjname, EffectiveDate
revert





感谢您的帮助。



Thanks for the help.

推荐答案

如果您有SMS,只需右键单击存储过程并选择新建。你会得到这样的模板:



If you have SMS just right-click Stored Procedures and choose New. You'll get the template like this:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<author,,name>
-- Create date: <create>
-- Description:	<description,,>
-- =============================================
CREATE PROCEDURE <procedure_name,> 
	-- Add the parameters for the stored procedure here
	<@Param1, sysname, @p1> <datatype_for_param1,> = <default_value_for_param1,>, 
	<@Param2, sysname, @p2> <datatype_for_param2,> = <default_value_for_param2,>
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END
GO</create>





对于初学者,您缺少AS关键字。



For starters, you are missing the AS keyword.


这篇关于尝试创建存储过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆