问题标签 [output-clause]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1204 浏览

sql-server - SQL Server INSERT 语句的 OUTPUT 子句不返回标识值

在 SQL Server 2008 R2 数据库服务器上,我尝试将数据插入表中,但 INSERT 语句的 OUTPUT 子句只为表的 Identity 列返回零。下面的 INSERT 语句是一个更大的脚本的一部分,其中许多语句包含在一个事务中。

这是声明:

这是我在选择时看到的@NewCountryDivisions在此处输入图像描述

这是表的定义:

我正在使用INSTEAD OF触发器来更新这两LastUpdated...列。我是编写触发器的新手,虽然我不希望这些会导致问题,但以防万一,这里是它们的定义:

0 投票
1 回答
257 浏览

varchar - 存储过程 varchar 输出参数

昨天,当我从我的 asp.net 应用程序中的存储过程返回一个 varchar(100) 输出参数时,我注意到一些奇怪的事情。看来返回的值现在包括额外的空格以返回完整的 100 个字符。这种行为是新的。我最近唯一改变的是将项目从 VS 2015 迁移到 2017。我正在使用 System.Data.SQLClient 连接到数据库。varchar 列的 Select 语句仅返回列中的值,没有额外的空格。Ansi_padding 对数据库关闭,并且未在代码中的任何位置设置。

这将返回给客户端。

关于发生了什么的任何想法?

0 投票
2 回答
651 浏览

sql - SQL 合并输出子句错误

我有三张桌子:

  1. 源表
  2. 消耗臭氧层物质表
  3. 暂存表

我的合并语句使用源表将数据插入 ODS 和输出到暂存表。插入后,源表和ODS的计数是一样的,但是staging count比两者都少。输出子句应该将 ODS 中插入的内容的副本插入到 Staging 中,但事实并非如此。有人知道为什么会这样吗?我的合并语句如下:-

谢谢!

0 投票
1 回答
1000 浏览

sql - 插入到输出子句

我坚持这个..我有two join tables,我想要的是复制同一组数据到它自己,并通过使用子句table1将新复制的数据的新 id 从列复制table1table2列。id2OUTPUT

但是现在通过上面的查询,我无法通过我需要的列..如何插入列B.title&B.amounttable2

0 投票
0 回答
18 浏览

sql-server - 根据 UPDATE 结果有条件地使用 SQL OUTPUT 子句

我很好奇是否可以根据创建插入的 UPDATE 有条件地使用 OUTPUT 子句。

例如,使用布尔复选框...

...现在,这部分工作正常。但我只想在 myTable1 中的行实际更新为 myTable1.BinCheckBox = 1 时使用 OUTPUT。

我使用数据库触发器进行了此操作,但如果可能的话,我希望这一切都发生在我的声明中。伪代码如...

UPDATE myTable 1 SET BinCheckBox = CASE WHEN BinCheckBox = '1' THEN 1 ELSE 0 END...AND IF BinCheckBox 更新为 1,然后 OUTPUT...

谢谢你的任何建议

更新/回答

因此OUTPUT,我没有使用INSERT INTO myTable2 SELECT,而是使用 和DELETE myTable2 FROM... 来处理删除行。像这样...

这似乎工作得很好。

0 投票
1 回答
2174 浏览

sql - 输出子句 VS 触发器

在我们的数据库中,大多数表都有一个dbupddate字段,该字段指示datetime最后一个INSERTUPDATE应用于该行。

为了避免该字段具有错误值,存在触发器(有时AFTER,有时INSTEAD OF),以确保最终该值是正确的,而不是有人可能尝试写入该字段的任何“手动”其他值。

现在我正在执行一个更新语句(实际上MERGE),我想要一个OUTPUT包含该字段的子句。正如我在相应的 MS 文章中所读到的,OUTPUT忽略触发器。

是否有任何解决方法可以在触发器之后OUTPUT返回值?dbupddate我不想进行另一个查询来绘制信息,因为我不能保证在这些查询之间的瞬间,另一个用户的第三个查询可能不会改变一切。


听从拉努的建议后的结果

我运行了提供的示例,唯一的例外是将字段的default值更改为,以便我能理解。我运行了 4 个查询中的每一个,然后从它们各自的表中选择并比较了这些值:updatetimeconvert(datetime2,'1900-01-01')updatetime

after我猜这里的输出会忽略触发器并返回在触发器生效之前插入的默认值。

相同的。现在疯狂的部分来了。我将插入的日期和删除的日期都画了出来:

因此,在这些update情况下,默认值不存在,但我在实际表和查询输出中有不同的值。我既不知道如何使这些值相同,也不知道更新案例中的日期时间究竟会发生什么。

0 投票
2 回答
64 浏览

sql - 使用 **DELETE FROM ... OUTPUT ... INTO** 时获取目标表的标识

我使用以下代码将旧数据ArchiveTable存档并从中删除存档数据SourceTable

表结构:

我需要返回已删除的记录并ArchiveTable.[ID]申请。我像这样更改代码:

此代码返回已删除的记录,但我不知道如何获取 ArchiveTable此记录的 ID。查看ArchiveTable结构,它具有OldID引用的列SourceTable.IDID它是列的IdentityArchiveTable。我需要ArchiveTable.ID在最终结果中。

0 投票
1 回答
620 浏览

sql-server - 带有 OUTPUT 子句的 INSERT INTO TEMP 表向不在源中的值添加额外字符

带有 OUTPUT 子句的 INSERT INTO TEMP 表添加了源中没有的额外字符。

例如,在从现有 PhysicalTable_1 表记录插入 LName = ' John ' 后,目标 PhysicalTable_1 表以及 #Temp 表具有 ' ?John ' 或 ' I?John ' 它有时会出现在 Lname 中,有时会出现在 FName 或 Email 以及其他领域。

PhysicalTable_1 中的数据示例 - FName = '​Raul' 插入后的目标记录看起来像 = '?Raul'

我正在使用这个:

我还尝试将#Temp 表的所有字符串字段数据类型更改为 NVARCHAR。目的地中的一些记录仍然有额外的字符

0 投票
1 回答
678 浏览

sql - 在 INSERT 语句中使用 OUTPUT INTO 和 from_table_name

Microsoft 的 OUTPUT 子句文档说您可以在 OUTPUT 子句的列名中使用from_table_name 。

有两个例子:

是否也可以在INSERT 语句中使用它?

使用表变量的失败示例

0 投票
0 回答
20 浏览

sql - 将输出子句与 CTE 结合使用会引发无法绑定多部分标识符的错误

我正在尝试将输出子句与更新语句一起使用(使用 CTE)。但是我反复收到 multi-part identifier could not be bound 错误。

错误:消息 4104,级别 16,状态 1,第 25 行

无法绑定多部分标识符“Scenario.ID”。