在PowerBuilder中讀取資料庫的多行資料

2021-08-25 02:02:05 字數 1942 閱讀 2459

當需要從資料庫中同時讀取多條記錄的時候,就需要使用游標進行操作。游標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...