declare
– 定義游標
cursor c_cursor is
–返回 lsbzdw_dwbh ,lsbzdw_dwmc
select lsbzdw_dwbh ,lsbzdw_dwmc from lsbzdw where lsbzdw_tybz=0 and lsbzdw_dwmc not like 『%合併%』
and lsbzdw_dwmc not like 『%抵消%』 and lsbzdw_dwbh !=『100001』 and rownum<=200;
– 宣告變數
v_dwbh lsbzdw.lsbzdw_dwbh%type;
v_dwmc lsbzdw.lsbzdw_dwmc%type;
v_ddh varchar2(50);
v_userid varchar2(50);
v_number varchar2(50);
v_sql varchar2(3000);
v_domainid varchar2(50);
begin
– 開啟游標
open c_cursor;
– 獲取資料 第一行賦值
fetch c_cursor into v_dwbh, v_dwmc;
– 處理資料 迴圈
while c_cursor%found loop
– :=賦值 || 為拼接字串
v_ddh:=『gsld』||v_dwbh;
v_sql:=『select sys_guid() from dual』;
execute immediate v_sql into v_userid;
– 『』』||v_dwbh||』』』 引號內部 單引號要用兩個表示乙個 『||v_dwbh||』 表示將 v_dwbh裡面的值當做乙個字串來傳輸 整體可以理解為賦值
v_sql:=『select id from gspuserdomain where shortpinyin=』』』||v_dwbh||』』』 and name =』『財務部』』』;
execute immediate v_sql into v_domainid;
insert into gspuser (startpageconfig, validfrom, state, alterpassflag, name, deforgid, notlogin_maxdays, type, profile, password, authcontent,
lastlogintegerime, userprofile, createddate, sysinit, passvalidspan, passlastchangedtime, id, description, creatorid, locktime, validto, timelimit, daylimit,
code, lastlogintime, telnumber, isimafuser, seclevel, userpic, lockpassword, dsource, isimuser, isusedynamicpass, lastmodifytime, defbizposid, userassobject, email)
values (null, null, 『1 『, 『0』, 『公司領導』, 『』||v_domainid||』』, 0, null, 『』, 『96nir3fsiyesvnejulxb6lr3/bs=』, 『1,0,0』,
null, null, 『01-3月 -19 04.04.29.250416 下午』, 『0』, 0, null, 『』||v_userid||』』, null,
『748fedee-5384-4e09-a4ad-960d1510b3e6』, null, null, 『111111111111111111111111』, 『1111111』, 『』||v_ddh||』』, null, null,
『0』, 『public』, null, null, 『0』, 『0』, 『0』, 『01-3月 -19 05.09.55.533000 下午』, null, 0, null);
fetch c_cursor into v_dwbh, v_dwmc;
end loop;
– 關閉游標
close c_cursor;
end;
游標的使用,看到的一段解釋很好的概念,如下:
游標是sql的乙個記憶體工作區,由系統或使用者以變數的形式定義。游標的作用就是用於臨時儲存從資料庫中提取的資料塊。在某些情況下,需要把資料從存放
在磁碟的表中調到計算機記憶體中進行處理,最後將處理結果顯示出來或最終寫回資料庫。這樣資料處理的速度才會提高,否則頻繁的磁碟資料交換會降低效率。
游標有兩種型別:顯式游標和隱式游標。在前述程式中用到的select…into…查詢語句,一次只能從資料庫中提取一行資料,對於這種形式的查詢和dml操作,
系統都會使用乙個隱式游標。但是如果要提取多行資料,就要由程式設計師定義乙個顯式游標,並通過與游標有關的語句進行處理。顯式游標對應乙個返回結果為多
行多列的select語句。
游標一旦開啟,資料就從資料庫中傳送到游標變數中,然後應用程式再從游標變數中分解出需要的資料,並進行處理。
在我們進行insert、update、delete和select value into variable 的操作中,使用的是隱式游標
隱式游標的屬性 返回值型別意義
sql%rowcount 整型 代表dml語句成功執行的資料行數
sql%found 布林型 值為true代表插入、刪除、更新或單行查詢操作成功
sql%notfound 布林型 與sql%found屬性返回值相反
sql%isopen 布林型 dml執行過程中為真,結束後為假
MS SQL入門基礎 游標 游標的優點和種類
本章前半部分提供了在ms sql server 中應用游標所應具有的有關游標的必要知識和各種語法。從中讀者可以了解游標的優點 種類 作用 學會如何定義 開啟 訪問 關閉 釋放游標以及游標的應用。除此之外,在本章的後半部分我們介紹了檢視和使用者自定義函式,使讀者了解檢視的眾多優點,比如簡化操作 提高資...
ORACLE SQL優化 入門
聽了王海波老師的課後的筆記 1.sql優化需要什麼?select from t1 where t1.x 2.為什麼建索引可以優化 建立索引以後,oracle就有兩個選擇,當選擇了更優秀的路徑去執行,這個過程就叫做優化。3.什麼是訪問路徑 訪問路徑是用於從行源檢索行的一種技術 1 table acce...
MS SQL入門基礎 讀取游標中的資料
當游標被成功開啟以後,就可以從游標中逐行地讀取資料,以進行相關處理。從游標中讀取資料主要使用fetch 命令。其語法規則為 各引數含義說明如下 next 返回結果集中當前行的下一行,並增加當前行數為返回行行數。如果fetch next是第一次讀取游標中資料,則返回結果集中的是第一行而不是第二行。pr...