Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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 插入和更新存储过程_Sql_Sql Server_Stored Procedures - Fatal编程技术网

Sql 插入和更新存储过程

Sql 插入和更新存储过程,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我不熟悉存储过程和SQL Server,目前正在使用SQL Server 2016。我正在尝试创建一个存储过程,允许我为特定帐户设置昵称。根据他们传递的MemberAccount昵称ID,我想知道是否更新现有行,或者如果为null,则添加新行。我不知道该怎么做 USE [MemberRelations] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[uspSetAccountNicknam

我不熟悉存储过程和SQL Server,目前正在使用SQL Server 2016。我正在尝试创建一个存储过程,允许我为特定帐户设置昵称。根据他们传递的MemberAccount昵称ID,我想知道是否更新现有行,或者如果为null,则添加新行。我不知道该怎么做

USE [MemberRelations]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[uspSetAccountNickname] 
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @CrmID varchar(20),
            @AccountNumber varchar(20),
            @Nickname varchar(50),
            @CreatedDate datetime,
            @updatedDate datetime

    SELECT

     if (@MemberAccountNicknameId is NULL)
        INSERT INTO MemberAccountNickname
        ELSE
        UPDATE MemberAccountNickname
        WHERE  MemberAccountNicknameId = @MemberAccountNicknameId
END
MemberAccount昵称ID是我在表中称为主键的内容。希望这有帮助,让我知道,如果我需要包括任何其他内容


谢谢,

看看SQL Server中的操作,他们有一个您想要的示例。

研究:跳过过程用法,只需编写一个使用变量的简单tsql脚本,它在哪里?您没有在任何地方声明它来保存此ID列的预定义值。然后检查表中是否存在,如果找到则更新或插入。这是基本的tsql,在编写更复杂的东西之前,您需要掌握它。试着跑之前先学会走路。这里面也有很多无效的语法。正如@SMor所说的,首先尝试让它作为tsql工作。这可能会使错误更加明显。