當需要從資料庫中同時讀取多條記錄的時候,就需要使用游標進行操作。游標cursor是乙個與select語句相關聯的符號名,游標的最大好處是可以讓使用者逐行的訪問表中的記錄。使用游標的典型的過程如下:
1)用declare關鍵字宣告游標。
2)使用open語句開啟游標
3)使用fetch語句讀取一行資料
4)處理資料
5)判斷是否已經讀取完所有的資料,未讀完資料的話,goto步驟3
6)使用close關鍵字關閉游標
(1)declare 語句
在使用游標之前,需要使用declare語句宣告游標,使用declare語句宣告游標的格式如下:
declare cursorname cursor for selectstatement
[using transactionobject]
其中cursorname是游標的名稱,可以使用任何有效的識別符號來表示;selectstatement是任何有效的select語句;transactionobject是事務物件名,預設時使用sqlca(sql通訊區).
例如,下面的語句宣告了乙個名字叫做student_sur的游標,該游標使用了預設事務物件sqlca和乙個變數le_***,其作用就是選取某個性別的所有的學生的學號和姓名:
declare student_cur cursor for
select student,student_id,student.student_name
from student where student.***=:ls_***
declare是個宣告語句,可以像宣告標準資料型別那樣把游標宣告稱區域性變數,例項變數或者是全域性變數.它並不真正的執行,因此在declare語句後,也無須檢查事務物件的sqlcode屬性.
值得注意的是declare雖然是乙個宣告語句,但是仍舊需要使用分號作為結束符.
(2)open語句
open語句開啟已經宣告的游標並且執行相應的select語句,其語法格式是:
open cursorname;
其中,cursorname是已經使用declare語句宣告的游標名,例如:
open student_cur;
(3)fetch語句
fetch語句從游標中讀取當前記錄並且把它儲存到指定的變數中,只要資料庫支援,還可以使用fecth first,fetch prior,fetch last。fetch語句的語法格式為:
fetch cursorname into variablelist
其中,cursorname是open語句開啟的游標名;variablelist是與select語句中選擇字段相對應的變數列表,例如,對前面declare語句說明的游標,可以使用下面的語句讀取記錄:
string ls_student,ls_student_name
fetch student_cur into :ls_student_id,:ls_student_name;
每執行一次fetch語句都會從游標中讀取一行記錄,需要讀取多行記錄時需要反覆呼叫fetch語句.執行fetch語句之後,應該檢查事務物件的sqlcode屬性,該屬性為0的時候,表明成功的讀取當前的記錄,如果sqlcode為-1的時候,表明讀取當前的記錄失敗,為100的時候,表明已經讀取完了所有的記錄.
(4)close語句
close語句關閉先前開啟的游標.其語法格式為
close cursorname;
其中,cursorname是先前開啟的游標的名稱.
關閉游標之後,就不能再使用fetch語句從游標中讀取資料了,下面是關閉游標的示例:
close student_cur;
GRAPH在PowerBuilder中的應用
graph在powerbuilder中的應用 在使用powerbuilder時,有時會用到graph。它作為一種輸出工具 直觀地顯示使用者想要看到的資料及資料間的關係 我們一般不通過它進行資料輸入 可以有兩種方法將gr aph放入使用者介面。其一是通過資料窗,使graph成為資料視窗的一部分,或本身...
PowerBuilder中對NULL的徹底解釋
null代表不知道或者沒有定義,和空值完全不同。例如,在資料庫中某欄位取值為null,代表使用者還沒有處理這個欄位的資料,有待於處理 而如果該欄位取值為空,代表這個欄位的資料使用者做了處理,這個欄位的取值是清楚的。當變數定義後,變數沒有取值,應該為null,但實際上不是這樣。powerbuilder...
PowerBuilder中對NULL的徹底解釋
null代表不知道或者沒有定義,和空值完全不同。例如,在資料庫中某欄位取值為null,代表使用者還沒有處理這個欄位的資料,有待於處理 而如果該欄位取值為空,代表這個欄位的資料使用者做了處理,這個欄位的取值是清楚的。當變數定義後,變數沒有取值,應該為null,但實際上不是這樣。powerbuilder...