Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microsoft SQL-转移员工的存储过程_Sql_Sql Server_Stored Procedures - Fatal编程技术网

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号,并从绿色团队更改为黄色团队。