【发布时间】:2013-02-13 06:08:23
【问题描述】:
我有一个名为“tasks”的表,其中'task id' 是标识列,对于该表,我必须编写保存存储过程,当没有给出“任务 ID”时,它应该插入值,当“任务” id' 被赋予它应该更新表。
当任务 id 是标识列时,如何实现这一点任何人都可以举例说明。 这是代码
Alter PROCEDURE TaskSave
(
@taskid int,
@ProjectId int,
@EmployeeId int,
@TaskName nvarchar(50),
@Duration_Hrs int,
@StartDate nvarchar(20),
@FinishDate nvarchar(20),
@CreateUserId int,
@CreatedDate nvarchar(20),
@ModifiedUserID int,
@ModifiedDate nvarchar(20),
@Is_CommonTask bit
) AS
BEGIN
IF Exists( select null from TblTasks where TaskId=@TaskId)
BEGIN
INSERT TblTasks
VALUES (@ProjectId,@EmployeeId,@TaskName,@Duration_Hrs,
@StartDate,@FinishDate,@CreateUserId,@CreatedDate,
@ModifiedUserID,@ModifiedDate,@Is_CommonTask)
END
ELSE
BEGIN
UPDATE TblTasks SET
StartDate=@StartDate,FinishDate=@FinishDate,
Duration_Hrs=@Duration_Hrs
WHERE TaskId=@TaskId
END
END
GO
【问题讨论】:
-
您的问题是什么?如果它只是测试
@TaskID变量,我建议将 IF 语句更改为IF @TaskID = -1(或其他一些将用作“未给定”用户案例的值的值。如果你想知道什么是插入后的任务id,然后使用@@IDENTITY。如果你还想返回@TaskID,则将参数设为OUTPUT
标签: sql sql-server sql-server-2008