总结 output 用法

第一种用法

返回受 INSERT、UPDATE 或 DELETE 语句影响的每行的信息,或者返回基于上述每行的表达式。这些结果可以返回到处理应用程序,

以供在确认消息、存档以及其他类似的应用程序要求中使用。此外,也可以将结果插入表或表变量。

用于:

DELETE

INSERT

UPDATE

语法:

<OUTPUT_CLAUSE> ::=
{
    [ OUTPUT <dml_select_list> INTO { @table_variable | output_table } [ ( column_list ) ] ]
    [ OUTPUT <dml_select_list> ]
}
<dml_select_list> ::=
{ <column_name> | scalar_expression } [ [AS] column_alias_identifier ]
    [ ,...n ]

<column_name> ::=
{ DELETED | INSERTED | from_table_name } . { * | column_name }

--先创建一个表
create table test2(
[no] int ,
n nvarchar(100)
)
--插入测试数据
 insert into test2([no],n)
select 1,‘a‘
union
select 2,‘b‘
union
select 3,‘c‘
go

--插入数据时调用
--把插入数据显示出来
INSERT test2([no],n)
OUTPUT INSERTED.*
VALUES (4, N‘d‘);
GO

select * from test2
go

DECLARE @MyTableVar table(
[no] int ,
n nvarchar(100)
);

--把[no]=1的记录删除,并把删除结果保存到表变量@MyTableVar中
delete from test2
output deleted.*
into @MyTableVar
where [no]=1

select * from @MyTableVar

select * from test2

DECLARE @MyTableVar table(
Newno int ,
Newn nvarchar(100),
Oldno int ,
Oldn nvarchar(100)
);

-- 修改记录,保存修改前后的记录到表变量中
update test2
set n=‘ccc‘
output
    inserted.no,
    inserted.n,
    deleted.no,
    deleted.n
into @MyTableVar
where [no]=3

select * from @MyTableVar

select * from test2

第二种用法

declare @largestMonth nvarchar(10)

declare @strsql nvarchar(1000) 
 Set @strsql = "SELECT  @largestMonth=convert(nvarchar(10),MAX([Time]),120)"
 Set @strsql [email protected] + " FROM tablename"
 
 Set @strsql [email protected] + @filter
 exec sp_executesql @strsql,N‘@largestMonth nvarchar(10) output‘,@largestMonth output

第三种用法

create procedure sp_output  
  @output int output  
 as  
  set @output = 121 
  return 1

declare @out int   
 declare @count int 
 exec @count = sp_output @out output   
 select @count 
select @out

时间: 2024-10-16 17:35:49

总结 output 用法的相关文章

TSql Output 用法

第一部分:TSql Output 关键字有两种应用场景 1,作为存储过程的参数类型,从存储过程中返回数据 2,返回受 INSERT.UPDATE.DELETE 或 MERGE 语句影响的各行中的信息,可以捕获嵌入到 INSERT.UPDATE.DELETE 或 MERGE 语句中 OUTPUT 子句的结果,然后将这些结果插入目标表. 3,语法 <OUTPUT_CLAUSE> ::= { [ OUTPUT <dml_select_list> INTO { @table_variabl

sql server output用法说明

带有output的insert语句. @@identity只能返回当前会话最后生产的标识列.  如果一次性插入多条语句的话. 需要返回这些自动生产的标识列. 那么outpu就派上用场了. declare @temp table(k int, v nvarchar(200)) insert into t1(datacol) output inserted.keycol, inserted.datacol into @temp select * from @temp ----------------

说一下output子句

Output子句日常灰常有用,而且用的地方也挺多,但是确好多时候被我们忽视,今天我就也简单扫盲一下这个语句的用法. Output子句 返回受 INSERT.UPDATE.DELETE 或 MERGE 语句影响的各行中的信息,或返回基于受这些语句影响的各行的表达式. 这些结果可以返回到处理应用程序,以供在确认消息.存档以及其他类似的应用程序要求中使用. 也可以将这些结果插入表或表变量. 另外,您可以捕获嵌入的 INSERT.UPDATE.DELETE 或 MERGE 语句中 OUTPUT 子句的结

SQL Server特殊用法笔记

声明: 本文为转载,感谢原作者的辛勤付出. 原博客地址为:http://www.cnblogs.com/icyJ/p/SQL_Statement.html 1.MERGE用法:关联两表,有则改,无则加 create table #AAA(id int,A int,AA int,AAA int,B int) create table #BBB(A int,B int) insert into #AAA select 1,1,1,1,null union select 2,2,2,2,null un

Linux Commands 彻底研究(04):cat

NAME cat - concatenate files and print on the standard output SYNOPSIS cat [OPTION]... [FILE]... DESCRIPTION Concatenate FILE(s), or standard input, to standard output. -A, --show-all equivalent to -vET -b, --number-nonblank number nonempty output li

webpack中output配置项中chunkFilename属性的用法

chunkFilename和webpack.optimize.CommonsChunkPlugin插件的作用差不多,都是用来将公共模块提取出来,但是用法不一样,这里主要介绍chunkFilename的使用 entry:{ main:__dirname + '/app/main.js', index:__dirname + '/app/index.js' }, output:{ path:__dirname + '/public', //通过HtmlWebpackPlugin插件生成的html文件

output子句用法 output inserted.autoId

我遇到的问题: sql语句:insert into dbo.TblPerson(uName,age,height,gender) values (@uName,@age,@height,@gender) 同时用ExecuteScalar返回首行首列,总是显示“未将对象引用设置到对象的实例.”结果看代码案例才知道sql语句改为:insert into TblPerson output inserted.autoId values(@name,@age,@height,@gender)就可以了.ou

sqlsevrer中output的用法

近日,看到代码中有output写法,不知其意,经过一番查找,终于找到了原因,它的作用是将修改影响的结果给输出出来. 比如update语句, 除了修改数据以外, 对于发生更新的列, update语句还可以返回这个列更新之前和更新之后的值. 在排除问题, 审核等其他情况下, 这样的功能很有用处. 带有output的insert语句. @@identity只能返回当前会话最后生产的标识列.  如果一次性插入多条语句的话. 需要返回这些自动生产的标识列. 那么outpu就派上用场了. declare @

angular 的 @Input、@Output 的一个用法

angular 使用 @input.@Output 来进行父子组件之间数据的传递. 如下: 父元素: <child-root parent_value="this is parent value" (child_emit)="test()"></child-root> 父元素标签中有一个属性是,parent_value,在子元素中可以使用该值: <p [title]="parent_value" >this p