1. 程式人生 > >Sql Server 遊標(利用遊標逐行更新資料)、儲存過程

Sql Server 遊標(利用遊標逐行更新資料)、儲存過程

遊標中用到的函式,就是前一篇文章中建立的那個函式。

另外,為了方便使用,把遊標放在儲存過程中,這樣就可以方便地直接使用儲存過程來執行遊標了。

 1 create procedure UpdateHKUNo    --儲存過程裡面放置遊標 2 as
 3 begin
 4 
 5     declare UpdateHKUNoCursor cursor    --宣告一個遊標,查詢滿足條件的資料 6         for select psn_code from person where type='E' and hku_no is null
 7     
 8     open UpdateHKUNoCursor    --
開啟 9 10 declare @noToUpdate varchar(20) --宣告一個變數,用於讀取遊標中的值11 fetch next from UpdateHKUNoCursor into @noToUpdate 12 13 while @@fetch_status=0 --迴圈讀取14 begin 15 --print @noToUpdate16 update person set hku_no=dbo.GetExtUserHKUNo() where psn_code=@noToUpdate
17 fetch next from UpdateHKUNoCursor into @noToUpdate 18 end 19 20 close UpdateHKUNoCursor --關閉21 22 deallocate UpdateHKUNoCursor --刪除23 24 end 25 26 --exec UpdateHKUNo

另外,判斷資料庫中是否存在某一儲存過程(Sqlserver 2000):

if exists (select * from sysobjects where name= '
UpdateHKUNo' and xtype ='P') print 'yse' else print 'no'


既然說到儲存過程,順便記錄多一些~

一、無引數的儲存過程的建立、修改、執行、刪除

create procedure Myprocedure    --建立,修改時是alteras
begin
    --do something    select * from sysobjects
end

execute Myprocedure    --執行
drop procedure Myprocedure

二、帶傳入引數的儲存過程:

create proc ProcWithParam   --建立帶有傳入引數的儲存過程@id int        --引數沒有用括號標記as
begin
    select * from sysobjects where id=@id    --使用引數end

exec ProcWithParam 4 --執行時,在右邊附帶引數
drop proc ProcWithParam

三、帶傳出引數的儲存過程(如果要傳入、傳出的,則把這個和前面第二個綜合就好啦):)

View Code
create proc ProuWithParamOut(@date datetime out)    --不帶out,將被預設為傳入引數!as 
begin
    select @date=crdate from sysobjects where id=1    --傳出引數只能是一個值,如果不帶條件地查詢,得到的數值是一個列表,將只取最後一個值end

declare @date datetime    --宣告一個變數,用於接收儲存過程傳出的引數exec ProuWithParamOut @date out     --呼叫時,需要右邊附帶用於接收傳出引數的變數select @date as '儲存過程傳出的引數' --取得傳出的引數,並自定義列名

注:傳出引數的宣告也可以像傳入引數那樣寫,不需括號

create proc ProuWithParamOut    --不帶out,將被預設為傳入引數!@date datetime out
as 
begin
    select @date=crdate from sysobjects where id=4    --傳出引數只能是一個值,如果不帶條件地查詢,得到的數值是一個列表,將只取最後一個值end

相關推薦

Sql Server 遊標利用遊標更新資料儲存過程

遊標中用到的函式,就是前一篇文章中建立的那個函式。 另外,為了方便使用,把遊標放在儲存過程中,這樣就可以方便地直接使用儲存過程來執行遊標了。 1 create procedure UpdateHKUNo --儲存過程裡面放置遊標 2 as 3 begin 4

C#利用NPOI更新excel文件數據

C# NPOI 更新excel文件 using System; using System.Collections.Generic; using System.Linq; using System.Text; using NPOI.SS.UserModel; using NPOI.H

幾個SQL server登陸,登入,使用者,角色和組用到的系統儲存過程

登入、使用者、角色和組是 Microsoft® SQL Server™ 2000 安全機制的基礎。連線到 SQL Server 的使用者必須使用特定的登入識別符號 (ID) 標識自己。因此,使用者只能檢視經授權可以檢視的表和檢視,並且只能執行經授權可以執行的儲存過程和管理功能。這一安全系統基於用來標識使用者

SQL Server通過建立臨時表遍歷更新資料

前言:   前段時間新專案上線為了趕進度很多模組的功能都沒有經過詳細的測試導致了生成環境中的資料和實際資料對不上,因此需要自己手寫一個數據庫指令碼來更新下之前的資料。(線上資料庫用是SQL Server2012)關於資料統計彙總的問題肯定會用到遍歷統計彙總,那麼問題來了資料庫中如何遍歷呢?好像並沒有for和f

SQL Server 執行計劃利用統計信息對數據的預估原理二為什麽復合索引列順序會影響到執行計劃對數據的預估

pan new statistic 細心 參考 gin 技術分享 重建 target 本文出處:http://www.cnblogs.com/wy123/p/6008477.html   關於統計信息對數據行數做預估,之前寫過對非相關列(單獨或者單獨的索

SQL Server 執行計劃利用統計資訊對資料的預估原理二為什麼複合索引列順序會影響到執行計劃對資料的預估

  關於統計資訊對資料行數做預估,之前寫過對非相關列(單獨或者單獨的索引列)進行預估時候的演算法,參考這裡。  今天來寫一下統計資訊對於複合索引在預估時候的計算方法和潛在問題。  本文原形來自於是個實際業務問題,某SQL在利用一個符合索引做查詢的時候,發現始終會出現預估誤差較大的情況,  而改變複合索

sql server 2008 之利用SQL Server Management Studio創建數據庫最基礎

sql server 2008 數據庫 基礎本文出自 “大李子” 博客,謝絕轉載!sql server 2008 之利用SQL Server Management Studio創建數據庫(最基礎)

SQL的綜合案例觸發器函式遊標儲存過程

下面是一個學生資訊的建立 在這裡就不建立資料庫了 CREATE TABLE CLASS ( class_id int IDENTITY PRIMARY KEY, --班級ID class_name Varchar(50), --班級名稱 cla

刪除表的重複記錄利用遊標

create table a_dist(id int,name varchar(20)) insert into a_dist values(1,'abc')insert into a_dist values(1,'abc')insert into a_dist values(1,'abc')insert

SQL Server 執行計劃利用統計資訊對資料的預估原理以及SQL Server 2014中預估策略的改變

前提       本文僅討論SQL Server查詢時,    對於非複合統計資訊,也即每個欄位的統計資訊只包含當前列的資料分佈的情況下,    在用多個欄位進行組合查詢的時候,如何根據統計資訊去預估行數的。    利用不同欄位的統計資訊做資料行數預估的演算法原理,以及SQL Server 2012和S

Sql Server刪除包含某個字串的,覆蓋索引因為like '%a%'不能覆蓋索引

select count(*) from CrawlQueue with(Index([Key]))   where  [key] like 'http://allrecipes.com/Recip

SQL 遊標的使用更新資料

一般情況下,我們用SELECT這些查詢語句時,都是針對的一行記錄而言,如果要在查詢分析器中對多行記錄(即記錄集)進行讀取操作時,則需要使用到遊標或WHILE等迴圈 遊標的型別:  1、靜態遊標(不檢測資料行的變化)   2、動態遊標(反映所有資料行的改變)   3、僅向前遊

消息:SQL Server 2017vNext的第三個公開的CTP社區技術預覽版發布了

start spn system 看到了 一個 get creat 社區 目前 今天看到了一個新聞,跟大家分享一下,有興趣的可以去嘗試一下。 SQL Server 2017 CTP3於5月23日發布了,詳細版本號是6.7.55.0。 大家可以去安裝試試。在下載頁面,目前是S

繞過010Editor網絡驗證用python做一個仿真http server真容易,就幾代碼

headers redirect 如果 table 本地 align cnn 破解版 resp 010Editor是一款非常強大的十六進制編輯器,尤其是它的模板功能在分析文件格式時相當好用!網上現在也有不少010Editor的破解版,如果沒錢或者舍不得花錢買授權的話,去官方

SQL server學習——T-SQL編程之存儲過程

mds ren creat 存儲 創建數據庫 希望 with 接收 bank 周五了,祝大家周末愉快。 之前一直在寫SQL server的分享,今天再來個T-SQL編程中的存儲過程。 存儲過程 存儲過程(procedure)類似於C語言中的函數,用來執行管理任務或應用復雜的

Microsoft SQL Serversql server 關系型數據庫管理系統

發現 統一 作者 用戶 olap crm oracle 管理 ice sql server一般指Microsoft SQL Server 關系型數據庫管理系統Microsoft SQL Server 是一個全面的數據庫平臺,使用集成的商業智能 (BI)工具提供了企業級的數據

卸載SQL Server 2008 R2

span SQ microsoft see config文件 ron sql https mac 一、卸載SQL Server 2008 (R2)   1、找到控制面板,win8及win7都可以直接點解“開始”按鈕找到。 (Tip:win10系統

在數據庫中調用webservices。SQL Server 阻止了對組件 'Ole Automation Procedures' 的 過程'sys.sp_OACreate' 的訪問

關閉 高級 create onf 開啟 show res roc pro --開啟 Ole Automation Procedures sp_configure ‘show advanced options‘, 1; GO RECONFIGURE; GO sp_config

sql server 操作不定期更新

要求:基本的語法要清楚。 sql server疑難點:  1、Partition by可以理解為 對多行資料分組後排序取每個產品的第一行資料 先處理內查詢,由內向外處理,外層查詢利用內層查詢的結果巢狀查詢不僅僅可以用於父查詢select語句使用。還可以用於insert、update、delet

mybatis學習筆記之——連線SQL server資料庫IDEA

我們新建一個普通的專案,File --> New --> Project -->Java --> Java EE。然後新建專案即可。 專案完成後我們新建一個conf資料夾,用來存放配置資訊,新建一個lib資料夾,用來存放jar包。 我們將mybatis的jar包,連線