Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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
Sql server 探索存储过程并再添加一个参数_Sql Server_Stored Procedures - Fatal编程技术网

Sql server 探索存储过程并再添加一个参数

Sql server 探索存储过程并再添加一个参数,sql-server,stored-procedures,Sql Server,Stored Procedures,我被困在这里,我迷失在中间的某个地方。因此,我将尝试解释情况 我有一个存储过程,将s数据插入表中,它工作得非常好。现在我再添加一个变量,这个变量非常重要 我从Active Directory获取数据并将其存储到文件中。另一方面,我在数据库中有一个表,其中也包含一些数据 CREATE PROCEDURE [dbo].[ADProcTemp] @Username varchar(250), @DisplayName varchar(70), @isEnabled tinyin

我被困在这里,我迷失在中间的某个地方。因此,我将尝试解释情况

我有一个存储过程,
s数据插入表中,它工作得非常好。现在我再添加一个变量,这个变量非常重要

我从Active Directory获取数据并将其存储到文件中。另一方面,我在数据库中有一个表,其中也包含一些数据

CREATE PROCEDURE [dbo].[ADProcTemp]
    @Username varchar(250),
    @DisplayName varchar(70),
    @isEnabled tinyint,
    @PassNevExp tinyint
AS
    SET NOCOUNT ON
BEGIN
    IF NOT EXISTS (SELECT TOP 1 PrezimeIme FROM [dbo].[tblZaposleni_AD] WITH (NOLOCK) 
                   WHERE NetworkLogin = @Username)
    BEGIN
        IF(@isEnabled = 1)
            INSERT INTO [dbo].[tblZaposleni_AD](NetworkLogin, PrezimeIme, Status, PassNevExp)
            VALUES (@Username, @DisplayName, @isEnabled, @PassNevExp)
    END
    ELSE
    BEGIN
        UPDATE [dbo].[tblZaposleni_AD]
        SET Status = @isEnabled         
        WHERE NetworkLogin = @Username 
          AND Status <> @isEnabled              
    END

    SELECT @@ROWCOUNT AS NumberOfRowsAffected
END

对我来说,这有点复杂,我被卡住了。有人能帮我吗?

您可以使用
大小写
表达式有条件地更新
状态
值:

UPDATE [dbo].[tblZaposleni_AD]
    SET Status = CASE
            WHEN @isEnable=0 AND @PassNevExp=0 THEN 'Nothing'
            WHEN @isEnable=0 AND @PassNevExp=1 THEN 'First Case'
            WHEN @isEnable=1 AND @PassNevExp=0 THEN 'Second Case'
            WHEN @isEnable=1 AND @PassNevExp=1 THEN 'Third Case'
        END
WHERE
    NetworkLogin = @Username 
    AND Status <> @isEnabled;
UPDATE[dbo].[tblZaposleni\u AD]
设置状态=案例
当@isEnable=0和@PassNevExp=0时,则为“Nothing”
当@isEnable=0且@PassNevExp=1时,则为“第一种情况”
当@isEnable=1且@PassNevExp=0时,则为“第二种情况”
当@isEnable=1和@PassNevExp=1时,则为“第三种情况”
结束
哪里
NetworkLogin=@Username
和状态@isEnabled;
UPDATE [dbo].[tblZaposleni_AD]
    SET Status = CASE
            WHEN @isEnable=0 AND @PassNevExp=0 THEN 'Nothing'
            WHEN @isEnable=0 AND @PassNevExp=1 THEN 'First Case'
            WHEN @isEnable=1 AND @PassNevExp=0 THEN 'Second Case'
            WHEN @isEnable=1 AND @PassNevExp=1 THEN 'Third Case'
        END
WHERE
    NetworkLogin = @Username 
    AND Status <> @isEnabled;