Microsoft SQL-转移员工的存储过程
我想创建一个存储过程,将员工从当前团队转移到另一个团队。到目前为止,我已经做到了:Microsoft SQL-转移员工的存储过程,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我想创建一个存储过程,将员工从当前团队转移到另一个团队。到目前为止,我已经做到了: CREATE OR ALTER PROC pr_EmployeeTeam @IDTeam1 int, @IDTeam2 int AS BEGIN DECLARE @NIC int SELECT @IDTeam1 = IDTeam from StuffTeams SELECT @IDTeam2 = IDTeam from StuffTeams UPDATE StuffTeams S
CREATE OR ALTER PROC pr_EmployeeTeam @IDTeam1 int, @IDTeam2 int
AS
BEGIN
DECLARE @NIC int
SELECT @IDTeam1 = IDTeam from StuffTeams
SELECT @IDTeam2 = IDTeam from StuffTeams
UPDATE StuffTeams SET IDTeam = @IDTeam1 WHERE NIC = @NIC
UPDATE StuffTeams SET IDTeam = @IDTeam2 WHERE NIC = @NIC
END
EXEC pr_EmployeeTeam 2,5
和我的StuffTeam
表格:
CREATE TABLE StuffTeams(
IDStuffTeam nvarchar(30) NOT NULL,
IDTeam int NOT NULL,
NIC int NOT NULL,
DateStart date NOT NULL,
DateFinish date NOT NULL,
CONSTRAINT PK_Stuff PRIMARY KEY (IDStuffTeam),
CONSTRAINT FK_sTeam FOREIGN KEY (IDTeam) REFERENCES Teams (IDTeam),
CONSTRAINT FK_sNIC FOREIGN KEY (NIC) REFERENCES Employees (NIC),
)
在StuffTeams
中,我有30个值,但当我执行时,代码会显示
共有0行
非常感谢
更新
CREATE PROC sp_UpdateTeam
@TeamID int,
@NIC int
AS
BEGIN
update StuffTeams SET IDTeam = @TeamID
WHERE NIC = @NIC
END
EXEC sp_UpdateTeam 5,54321
这解决了我的问题!谢谢
根据您的要求,我已更新了您的程序,如下所示:
CREATE OR ALTER PROC pr_EmployeeTeam @IDTeam1 int, @IDTeam2 int
AS
BEGIN
DECLARE @NIC int
SELECT @NIC = IDTeam from StuffTeams WHERE IDTeam = @IDTeam1
UPDATE StuffTeams SET IDTeam = @IDTeam2 WHERE NIC = @NIC
END
EXEC pr_EmployeeTeam 2,5您从未分配
@NIC
值,并且NULL
不匹配任何行。并且您使用一些不可预测的值覆盖输入参数@IDTeam1
,@IDTeam2
,因此sp需要接收@IDTeam1
,@IDTeam2
以及@NIC
?当我再次将@NIC
添加到sp中时,我以EXEC sp_EmployeeTeam 2,512345
的身份执行。这一次有6行影响您输入参数,您为两个变量分配相同的值,您使用相同的值更新表两次。。。总而言之,这些代码没有多大意义。请提供示例数据和预期结果(更新了多少行等)-否则无法在此处支持您。假设我有一个IDTeam=1
,它是绿色团队,IDTeam=2
,它是黄色团队。我想接收NIC
员工编号,该编号类似于他们的ID号,并从绿色团队更改为黄色团队。