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

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

SQL Server 7.0 入門(八)

瀏覽:132日期:2023-10-28 10:01:42
存儲過程中返回結果;;;;;;;從存儲過程中返回結果有三種方式:1、;;返回結果集這是客戶端應用程序返回結果的最通用的方法。結果集是通過使用SELECT語句選擇數據產生的。結果集可以從永久表、臨時表或局部變量中產生。將結果返回到另一個存儲過程不是一種有效的方法。存儲過程不能訪問另一個存儲過程建立的結果集。例如從永久表中返回結果集:USE pubsGOCREATE PROCEDURE ap_CreateResultFromPermtableASSELECT au_iname FROM authorsGO例如從局部變量中創建結果集:USE pubsGOCREATE PROCEDURE ap_CreateResultFromVariableASDECLARE @au_iname char(20)SELECT @au_iname = au_iname FROM authorsWHERE au_id = ‘172-32-1176’SELECT @au_idGO2、;;設置OUTPUT參數的值輸出參數經常用來從存儲過程中檢索出結果。如果某個參數在傳輸到存儲過程中時被定義成OUTPUT,則對該參數的任何修改在退出存儲之后仍然有效。例如:USE pubsGOCREATE PROCEDURE ap_SetOutputVar @count integer OUTPUTASSELECT @count = count(*) FROM authorsGO從輸出參數中檢索出值:USE pubsGOCREATE PROCEDURE ap_GetOutputVarASDECLARE @num integerEXECUTE ap_SetOutputVar @num OUTPUTPRINT “the count is”+convert(char,@num)GO· 將游標使用成OUTPUT參數。游標可以使用OUTPUT(輸出)參數,但不能使用成輸入參數。也就是說,游標可以作為結果返回,但卻不能傳輸到過程中去。當游標被用作參數時,需要限定其為OUTPUT和VARYING。VARYING關鍵字指出該結果集要用來支持輸出參數。這樣就提供了將結果集返回到調用過程的能力。例如:USE pubsGOCREATE PROCEDURE GetTitleCount @count_cursor CURSOR VARYING OUTPUTASSET @count_cursor = CURSORFORSELECT au_id,count(*)FROM titleauthorsGROUP BY au_idOPEN @count_cursorGO3、;;通過RETURN參數返回狀態這是一種從存儲過程返回錯誤碼的方法。存儲過程總是返回一個狀態值,用戶也可以使用RETURN語句返回自己的狀態。例如:USE pubsGOCREATE PROCEDURE ap_SetReturnStatusASDECLARE @count integerSELECT @count = count(*) FROM authorsIF @count = 0RETURN(1)ELSERETURN (0)GO例如檢索出返回的狀態:USE pubsGOCREATE PROCEDURE ap_GetReturnStatusASDECLARE @status integerEXECUTE @status = ap_SetReturnStatusIF @status = 1PRINT “No rows found”ELSEPRINT “successful”GO在存儲過程中進行錯誤處理;;;;;;;如同其它程序一樣,在存儲過程中進行錯誤處理是非常重要的。系統變更@@error在執行每一個Transact SQL語句之后都會得到一個值。對于成功的執行,@@error的值為0,如果出現錯誤,則@@error中將包含錯誤信息。@@error系統變量對存儲過程的錯誤處理是非常重要的。;;;;;;;注意:為了防止錯誤,@@error所能設置的值在sysmessages表的“error”中反映了出來。在存儲過程中的錯誤有兩種類型:1、;;;;數據庫相關的錯誤這些錯誤是由數據庫的不一致性引起的,系統使用非0的@@error值表示特定的數據庫問題。在Transact SQL執行之后,可以通過@@error獲得所出現的錯誤。如果發現@@error不為0,則必須采取必要的行動,大多數情況下,存儲將不再繼續進行處理而返回。下面的示例展示了典型的獲取數據庫錯誤的方法。該過程將錯誤代碼放置到輸出變量中,這樣,調用程序就能夠訪問到。USE pubsGOCREATE PROCEDURE ap_TrapDatabaseError @return_code integer OUTPUTASUPDATE authors SET au_iname = “Jackson”WHERE au_iname = “Smith”IF @@error <> 0BEGIN;;;;;;;SELECT @return_code = @@error;;;;;;;RETURNENDELSE;;;;;;;@return_code = 0GO2、;;;;業務邏輯錯誤這些錯誤是由于違反了業務規則而引起的。要獲取這些錯誤,首先需要定義業務規則,基于這些規則,需要在存儲過程中增加必要的錯誤檢測代碼。人們經常使用RAISERROR語句通報這些錯誤。RAISERROR提供了返回用戶定義錯誤及將@@error變量設置成用戶定義錯誤號的能力。錯誤消息可以被動態地建立,或者基于錯誤號從“sysmessages”表中檢索到。一旦出現了錯誤,錯誤就會以一種服務器錯誤消息的方式返回到客戶機。下面是RAISERROR命令的語法:RAISERROR (msg_id | msg_str, severity, state[, argument ][,…n]])[WITH options]Msg_id指明用戶定義消息的id,該消息存儲在“sysmessages”系統表中。Msg_str用于動態創建消息的消息字符串。這與C語言中的“printf”非常相似。Severity定義用戶賦值的錯誤消息嚴重程度。State是從1到127的任意整數值,它表示錯誤的調用狀態信息。負數的state值將缺省為1。OPTIONS指明錯誤的定制選項。OPTIONS的有效值如下:1);;LOG。將錯誤記錄到服務器錯誤日志和NT事件日志中。該選項需要消息帶有從19到25的嚴重程度。而只有系統管理員才能發出這種消息。2);;NOWAIT。將消息立即發送到客戶端服務器。3);;SETERROR。不管其嚴重級別如何,將@@error的值設置為msg_id或5000。遠程過程調用;;;;;;;SQL Server提供了調用駐留在不同服務器上的存儲過程的能力。調用這樣的存儲過程稱謂遠程存儲過程調用。為了使得調用能從一個SQL Server轉移到另一個服務器,兩個服務器應該相互定義成對方的有效遠程服務器。;;;;;;;設置遠程服務器的配置:;;;;;;;· 擴展某個服務器的組。;;;;;;;· 右擊該服務器并點擊“Properties”。;;;;;;;· 設置選項“Allow other SQL Servers to connect remotely to this SQL server via RPC”。;;;;;;;· 設置“Query time out”選項的值,該值指定從一個查詢處理返回所能等待的秒數。缺省值為0,表示允許無限的等待時間。;;;;;;;· 設置完成配置選項之后,點擊“OK”。;;;;;;;· 重新啟動服務器之后,修改將會生效。;;;;;;;· 在另一臺遠程服務器上重復相同的步驟。;;;;;;;調用遠程存儲過程需要指明服務器的名稱,后帶數據庫的名稱和擁有者的名稱。下面是在不同的服務器(Server2)上調用一個存儲過程的示例。Exec server2.pubs.dbo.myproc豆豆的后話:;;;;;;;這里只是粗淺的介紹了SQL Server常用的知識,對象也是基于SQL Server數據庫編寫應用程序的編程人員,而非數據庫管理者。但對于應用程序編程者,了解數據庫的管理也是非常有用的。建議在以后的時間自行去了解數據庫的管理,這對于優化程序也是相當有用的。————————全文完—————————
標簽: Sql Server 數據庫
主站蜘蛛池模板: 立式硫化罐-劳保用品硫化罐-厂家直销-山东鑫泰鑫硫化罐厂家 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | led太阳能路灯厂家价格_风光互补庭院灯_农村市政工程路灯-中山华可路灯品牌 | 液压油缸-液压缸厂家价格,液压站系统-山东国立液压制造有限公司 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 波纹补偿器_不锈钢波纹补偿器_巩义市润达管道设备制造有限公司 | 合肥升降机-合肥升降货梯-安徽升降平台「厂家直销」-安徽鼎升自动化科技有限公司 | LED灯杆屏_LED广告机_户外LED广告机_智慧灯杆_智慧路灯-太龙智显科技(深圳)有限公司 | 阿里巴巴诚信通温州、台州、宁波、嘉兴授权渠道商-浙江联欣科技提供阿里会员办理 | GAST/BRIWATEC/CINCINNATI/KARL-KLEIN/ZIEHL-ABEGG风机|亚喜科技 | 智能家居全屋智能系统多少钱一套-小米全套价格、装修方案 | 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 真丝围巾|真丝丝巾|羊绒围巾|围巾品牌|浙江越缇围巾厂家定制 | 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 医疗仪器模块 健康一体机 多参数监护仪 智慧医疗仪器方案定制 血氧监护 心电监护 -朗锐慧康 | 致胜管家软件服务【在线免费体验】| 高精度电阻回路测试仪-回路直流电阻测试仪-武汉特高压电力科技有限公司 | 电动垃圾车,垃圾清运车-江苏速利达机车有限公司 | 海外仓系统|国际货代系统|退货换标系统|WMS仓储系统|海豚云 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | IWIS链条代理-ALPS耦合透镜-硅烷预处理剂-上海顶楚电子有限公司 lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 棉柔巾代加工_洗脸巾oem_一次性毛巾_浴巾生产厂家-杭州禾壹卫品科技有限公司 | LCD3D打印机|教育|桌面|光固化|FDM3D打印机|3D打印设备-广州造维科技有限公司 | 余姚生活网_余姚论坛_余姚市综合门户网站 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 净水器代理,净水器招商,净水器加盟-FineSky德国法兹全屋净水 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 | 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 膜结构停车棚-自行车棚-膜结构汽车棚加工安装厂家幸福膜结构 | 权威废金属|废塑料|废纸|废铜|废钢价格|再生资源回收行情报价中心-中废网 | 渗透仪-直剪仪-三轴仪|苏州昱创百科 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 伸缩器_伸缩接头_传力接头-巩义市润达管道设备制造有限公司 | 福建珂朗雅装饰材料有限公司「官方网站」 | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 电动打包机_气动打包机_钢带捆扎机_废纸打包机_手动捆扎机 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 高低温万能试验机_拉力试验机_拉伸试验机-馥勒仪器科技(上海)有限公司 | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 |