相关疑难解决方法(0)

如果在SQL Server 2008中存在INSERT,则更新UPDATE

我想知道如何使用一个语句在SQL Server中使用UPSERT或换句话说UPDATE if records exists Else enter new record操作?

这个例子显示了在Oracle中实现这一目标的方式在这里 ,但它使用Dual表,它这不存在SQL Server.

那么,任何SQL Server替代品(没有存储过程)好吗?

sql sql-server sql-server-2008

39
推荐指数
1
解决办法
22万
查看次数

SQL存储过程IF EXISTS UPDATE ELSE INSERT

好.我早些时候得到了很多帮助,使用SQL后端来处理一个简单的...只是不适合我:( ...我工作的小办公室的时钟解决方案,所以我回来了!

我目前正在使用的表格由6列组成:

  1. clockDate date not null PK
  2. userName varchar(50)not null PK
  3. clockIn time(0)
  4. breakOut时间(0)
  5. breakIn time(0)
  6. clockOut时间(0)

我虽然IF NOT EXISTS INSERT ELSE UPDATE从上一个问题中找到了我的陈述,但现在我试图在存储过程中使用它,而不是一个简单的查询窗口,但没有成功.

基本上用户输入是一个明智的选择.但是,如果用户没有时钟,但他们在午餐时间退出,则语句需要创建行而不是更新现有行.好的,这是我的存储过程:

ALTER PROCEDURE dbo.BreakOut
(
    @userName varchar(50)
)
AS

IF EXISTS (SELECT * FROM Clock WHERE clockDate = GETDATE() AND userName = @userName)
    BEGIN
        UPDATE Clock SET breakOut = GETDATE() 
            WHERE clockDate = GETDATE() AND userName = @userName
    END
ELSE
    BEGIN
        INSERT INTO Clock (clockDate, userName, breakOut) 
            VALUES (GETDATE(), @userName, GETDATE())
    END …
Run Code Online (Sandbox Code Playgroud)

sql stored-procedures if-statement

17
推荐指数
1
解决办法
8万
查看次数

使用where子句插入值

我试图以编程方式在我的表中输入值.

我不能直接选择@variables.我必须使用关键字值.

如何在insert插入中使用Values时创建where子句.

我试图避免重复

  DECLARE @MyID INT
  DECLARE @Phone varchar(10)
  DECLARE @MyDATE DateTime
  DECLARE @Agent as varchar(50)
  DECLARE @Charge as varchar(50)
  DECLARE @Vendor as varchar(50)

  SET @MyID = 215199999
  SET @Phone = '9999999999'
  SET @MyDATE = '2010-12-04 11:56:12.000'
  SET @Agent = 'fbrown'
  SET @Charge = 'NO'
  SET @Vendor = 'NO'

  INSERT INTO [MyDB].[dbo].[Accounts]
  (MyID,Phone,MyDate,Agent,Charge,Vendor)
  VALUES (
  @MyID
  ,@Phone
  ,@MyDATE
  ,@Agent
  ,@Charge
  ,@Vendor 
  ) WHERE MyID NOT IN (@MyID)
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2005 sql-server-2008

6
推荐指数
1
解决办法
7万
查看次数