问题标签 [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.
varchar - 存储过程 varchar 输出参数
昨天,当我从我的 asp.net 应用程序中的存储过程返回一个 varchar(100) 输出参数时,我注意到一些奇怪的事情。看来返回的值现在包括额外的空格以返回完整的 100 个字符。这种行为是新的。我最近唯一改变的是将项目从 VS 2015 迁移到 2017。我正在使用 System.Data.SQLClient 连接到数据库。varchar 列的 Select 语句仅返回列中的值,没有额外的空格。Ansi_padding 对数据库关闭,并且未在代码中的任何位置设置。
这将返回给客户端。
关于发生了什么的任何想法?
sql - SQL 合并输出子句错误
我有三张桌子:
- 源表
- 消耗臭氧层物质表
- 暂存表
我的合并语句使用源表将数据插入 ODS 和输出到暂存表。插入后,源表和ODS的计数是一样的,但是staging count比两者都少。输出子句应该将 ODS 中插入的内容的副本插入到 Staging 中,但事实并非如此。有人知道为什么会这样吗?我的合并语句如下:-
谢谢!
sql - 插入到输出子句
我坚持这个..我有two join tables
,我想要的是复制同一组数据到它自己,并通过使用子句table1
将新复制的数据的新 id 从列复制table1
到table2
列。id2
OUTPUT
但是现在通过上面的查询,我无法通过我需要的列..如何插入列B.title
&B.amount
到table2
?
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
... 来处理删除行。像这样...
这似乎工作得很好。
sql - 输出子句 VS 触发器
在我们的数据库中,大多数表都有一个dbupddate
字段,该字段指示datetime
最后一个INSERT
或UPDATE
应用于该行。
为了避免该字段具有错误值,存在触发器(有时AFTER
,有时INSTEAD OF
),以确保最终该值是正确的,而不是有人可能尝试写入该字段的任何“手动”其他值。
现在我正在执行一个更新语句(实际上MERGE
),我想要一个OUTPUT
包含该字段的子句。正如我在相应的 MS 文章中所读到的,OUTPUT
忽略触发器。
是否有任何解决方法可以在触发器之后OUTPUT
返回值?dbupddate
我不想进行另一个查询来绘制信息,因为我不能保证在这些查询之间的瞬间,另一个用户的第三个查询可能不会改变一切。
听从拉努的建议后的结果
我运行了提供的示例,唯一的例外是将字段的default
值更改为,以便我能理解。我运行了 4 个查询中的每一个,然后从它们各自的表中选择并比较了这些值:updatetime
convert(datetime2,'1900-01-01')
updatetime
after
我猜这里的输出会忽略触发器并返回在触发器生效之前插入的默认值。
相同的。现在疯狂的部分来了。我将插入的日期和删除的日期都画了出来:
因此,在这些update
情况下,默认值不存在,但我在实际表和查询输出中有不同的值。我既不知道如何使这些值相同,也不知道更新案例中的日期时间究竟会发生什么。
sql - 使用 **DELETE FROM ... OUTPUT ... INTO** 时获取目标表的标识
我使用以下代码将旧数据ArchiveTable
存档并从中删除存档数据SourceTable
表结构:
我需要返回已删除的记录并ArchiveTable.[ID]
申请。我像这样更改代码:
此代码返回已删除的记录,但我不知道如何获取 ArchiveTable
此记录的 ID。查看ArchiveTable
结构,它具有OldID
引用的列SourceTable.ID
和ID
它是列的Identity
列ArchiveTable
。我需要ArchiveTable.ID
在最终结果中。
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。目的地中的一些记录仍然有额外的字符
sql - 在 INSERT 语句中使用 OUTPUT INTO 和 from_table_name
Microsoft 的 OUTPUT 子句文档说您可以在 OUTPUT 子句的列名中使用from_table_name 。
有两个例子:
是否也可以在INSERT 语句中使用它?
使用表变量的失败示例
sql - 将输出子句与 CTE 结合使用会引发无法绑定多部分标识符的错误
我正在尝试将输出子句与更新语句一起使用(使用 CTE)。但是我反复收到 multi-part identifier could not be bound 错误。
错误:消息 4104,级别 16,状态 1,第 25 行
无法绑定多部分标识符“Scenario.ID”。