电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

SQL Server 2005數據庫中的Output子句

瀏覽:3日期:2023-11-05 14:31:28
這篇論壇文章(賽迪網技術社區)主要介紹了SQL Server 2005中Output子句的使用方法,更多內容請參考下文:

SQL Server 2005中的output子句,可以使你從修改語句(INSERT、UPDATE、DELETE)中將數據返回到表變量中。帶結果的 DML 的有用方案包括清除和存檔、消息處理應用程序以及其他方案。這一新的 OUTPUT 子句的語法為:

OUTPUT INTO @table_variable

可以通過引用插入的表和刪除的表來訪問被修改的行的舊/新映像,其方式與訪問觸發器類似。在 INSERT 語句中,只能訪問插入的表。在 DELETE 語句中,只能訪問刪除的表。在 UPDATE 語句中,可以訪問插入的表和刪除的表。下面選用MSDN的例子介紹之:

作為帶結果的 DML 可能有用的清除和存檔方案的示例,假設你具有一個大型的 Orders 表,并且希望定期清除歷史數據。你還希望將清除的數據復制到一個名為 OrdersArchive 的存檔表中。你聲明了一個名為 @DeletedOrders 的表變量,并且進入一個循環,在該循環中,你使用上文中的“TOP 增強功能”一節中描述的清除方法,成塊地刪除了歷史數據(比如,早于 2003 年的定單)。這里增加的代碼是 OUTPUT 子句,它將所有被刪除的行的所有屬性復制到 @DeletedOrders 表變量中,然后,使用 INSERT INTO 語句將該表變量中的所有行復制到 OrdersArchive 表中:

DECLARE @DeletedOrders TABLE

(

orderid INT,

orderdate DATETIME,

empid INT,

custid VARCHAR(5),

qty INT

)

WHILE 1=1

BEGIN

BEGIN TRAN

DELETE TOP(5000) FROM Orders

OUTPUT deleted.* INTO @DeletedOrders

WHERE orderdate < '20030101'

INSERT INTO OrdersArchive

SELECT * FROM @DeletedOrders

COMMIT TRAN

DELETE FROM @DeletedOrders

IF @@rowcount < 5000

BREAK

END

再舉一個例子如下,假如有表如下

Create table Employee(EmpID int identity(1, 1) constraint Employee_pk primary key, FirstName varchar(100), LastName Varchar(100), Sex char(1), Salutation as case when Sex ='M' then 'Mr.' when Sex ='F' then 'Ms.' else '' end, Salary Money, Deductions as case When Salary <3000 then .20 * Salarywhen Salary between 30000 and 50000 then .26*Salary when Salary between 50001 and 75000 then .30*Salaryelse .35*Salary end, DOJ datetime constraint DOJ_DEF default getdate())

很容易的一個表,其中用到了case子句,分別對Salutation ,deductions,doj等進行了設置。而我們可以再搞一個存儲過程,如下:

Create procedure employee_insert@Fname varchar(100),@Lname varchar(100),@sex char(1),@Salary Moneyasdeclare @empoutput table (EmpID int ,FirstName varchar(100), LastName Varchar(100),Sex char(1), Salutation char(3),Salary Money,Deductions Money,DOJ datetime )insert into Employee(FirstName,LastName,Salary,sex)OUTPUT inserted.* into @empoutputvalues(@Fname ,@Lname ,@Salary,@sex )Select * from @empoutput

然后在調用該存儲過程時,可以這樣來用USE [MyDatabase]

GOexec employee_insert 'Miho','Yoshikawa','F',146000

這樣,將在執行的時候,將往employee表里插入數據,并且,將定義了一個臨時的變量empoutput,注意哦,這個可以以表的形式定義的,這里很容易看的出來,并且,將插入到employee表的數據同時輸出到這個empoutput變量中去.我們執行這個存儲過程后,會發現如下結果

EmpID,FirstName,LastName,Sex,Salutation,Salary,Deductions,DOJ

7,Miho,Yoshikawa,F,Ms.,146000.00,51100.00,2006-04-09 23:16:44.920

,并且employee表中的確插入了記錄

-------------------------------------------------------------------------------------

調用帶有Output參數的存儲過程.txt

CREATE PROCEDURE SP_RealTimeDisplay

(

@FromEmp nvarchar(20),

@FromDep nvarchar(20),

@i1 nvarchar(20) output,

@i2 nvarchar(20) output,

@i3 nvarchar(20) output

)

AS

set nocount on

--公司批復

select @i1=(Select count(FsignID) as Sum1 From T_MessageSignature Where FSignID=@FromEmp and FLastSignID=1 and FSignRemark is null)

--會簽意見

select @i2=(Select count(FsignID) as Sum1 From T_MessageSignature Where FSignID=@FromEmp and FLastSignID=0 and FSignRemark is null)

--考勤審批

select @i3=(Select count(FKaoQinID) as Sum1 From T_KaoQin Where FDepID Like @FromDep and FCheckerID=0)

GO

--調用,先定義再輸出

DECLARE @a nvarchar(20)

DECLARE @b nvarchar(20)

DECLARE @c nvarchar(20)

Execute SP_RealTimeDisplay '106000003','012708%',@a output,@b output,@c output

select @a as aa, @b as bb,@c as cc

標簽: Sql Server 數據庫
主站蜘蛛池模板: 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 山东商品混凝土搅拌楼-环保型搅拌站-拌合站-分体仓-搅拌机厂家-天宇 | 临海涌泉蜜桔官网|涌泉蜜桔微商批发代理|涌泉蜜桔供应链|涌泉蜜桔一件代发 | 石家庄小程序开发_小程序开发公司_APP开发_网站制作-石家庄乘航网络科技有限公司 | 电池高低温试验箱-气态冲击箱-双层电池防爆箱|简户百科 | 酒水灌装机-白酒灌装机-酒精果酒酱油醋灌装设备_青州惠联灌装机械 | 吊篮式|移动式冷热冲击试验箱-二槽冷热冲击试验箱-广东科宝 | 厦门ISO认证|厦门ISO9001认证|厦门ISO14001认证|厦门ISO45001认证-艾索咨询专注ISO认证行业 | 达利园物流科技集团- | 合肥触摸一体机_触摸查询机厂家_合肥拼接屏-安徽迅博智能科技 | 课件导航网_ppt课件_课件模板_课件下载_最新课件资源分享发布平台 | 粘度计NDJ-5S,粘度计NDJ-8S,越平水分测定仪-上海右一仪器有限公司 | 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | 浙江红酒库-冰雕库-气调库-茶叶库安装-医药疫苗冷库-食品物流恒温恒湿车间-杭州领顺实业有限公司 | 考试试题_试卷及答案_诗词单词成语 - 优易学| 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 | 天津次氯酸钠酸钙溶液-天津氢氧化钠厂家-天津市辅仁化工有限公司 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 电液推杆生产厂家|电动推杆|液压推杆-扬州唯升机械有限公司 | 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 石家庄小程序开发_小程序开发公司_APP开发_网站制作-石家庄乘航网络科技有限公司 | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 斗式提升机_链式斗提机_带式斗提机厂家无锡市鸿诚输送机械有限公司 | 合肥弱电工程_安徽安防工程_智能化工程公司-合肥雷润 | 脱硫搅拌器厂家-淄博友胜不锈钢搅拌器厂家 | 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 固诺家居-全屋定制十大品牌_整体衣柜木门橱柜招商加盟 | 广州市哲铭油墨涂料有限公司,水性漆生产研发基地 | 老房子翻新装修,旧房墙面翻新,房屋防水补漏,厨房卫生间改造,室内装潢装修公司 - 一修房屋快修官网 | 防火窗_耐火窗_防火门厂家_防火卷帘门-重庆三乐门业有限公司 | 结晶点测定仪-润滑脂滴点测定仪-大连煜烁 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 北京律师事务所_房屋拆迁律师_24小时免费法律咨询_云合专业律师网 | 伺服电机维修、驱动器维修「安川|三菱|松下」伺服维修公司-深圳华创益 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 导电银胶_LED封装导电银胶_半导体封装导电胶厂家-上海腾烁 | 蜗轮丝杆升降机-螺旋升降机-丝杠升降机厂家-润驰传动 |