當(dāng)前位置:
首頁 >
[Oracle]使用滚动游标
發(fā)布時間:2023/12/9
29
豆豆
生活随笔
收集整理的這篇文章主要介紹了
[Oracle]使用滚动游标
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
源代碼:xx.pc
/*功能:演示了Oracle滾動游標(biāo)操作定義游標(biāo)時注意事項:1. DECLARE CURSOR語句必須是使用游標(biāo)的第一條語句2. 游標(biāo)名稱是一個標(biāo)識符,而不是宿主變量,其長度是可以任意的,但只有前31個字符有效3. 游標(biāo)所對應(yīng)的SELECT語句不能包含INTO子句4. 游標(biāo)語句(DECLARE,OPEN,FETCH,CLOSE)必須在同一個預(yù)編譯單元內(nèi) */ #include <stdio.h> #include <string.h> #include <stdlib.h>#include <sqlca.h> #pragma comment(lib, "orasql10.lib")int connect(); void cursor(); void sql_error();void main() {EXEC SQL WHENEVER SQLERROR DO sql_error(); // 安裝錯誤處理句柄if(connect() == 0){cursor();EXEC SQL COMMIT RELEASE; // 提交事務(wù),斷開連接}elseprintf("連接失敗\n"); }int connect() // connect to oracle database {char username[10], password[10], server[10];strcpy(username, "scott");strcpy(password, "zzb888888");strcpy(server, "orcl");EXEC SQL CONNECT :username IDENTIFIED BY :password USING :server;if(sqlca.sqlcode == 0)return 0;elsereturn sqlca.sqlcode; }void sql_error() // print error infomation {printf("%.*s\n", sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc); }void cursor() // 游標(biāo)操作 {int eno; // 定義宿主變量char name[10], action;float salary;EXEC SQL DECLARE emp_cursor SCROLL CURSOR FOR Select empno, ename, sal from emp; // 定義游標(biāo)EXEC SQL OPEN emp_cursor; // 打開游標(biāo)EXEC SQL WHENEVER NOT FOUND DO BREAK; // 游標(biāo)數(shù)據(jù)提取完畢后退出循環(huán)for(; ;){printf("\nF: 第一行,P:前一行,N:下一行,L:最后一行\(zhòng)n");printf("C: 當(dāng)前行,X:退出\n請輸入具體操作:");scanf("%c", &action);fflush(stdin);switch(action){case 'F':case 'f':EXEC SQL FETCH FIRST emp_cursor into :eno, :name, :salary;break;case 'P':case 'p':EXEC SQL FETCH PRIOR emp_cursor into :eno, :name, :salary;break;case 'N':case 'n':EXEC SQL FETCH NEXT emp_cursor into :eno, :name, :salary;break;case 'L':case 'l':EXEC SQL FETCH LAST emp_cursor into :eno, :name, :salary;break;case 'C':case 'c':EXEC SQL FETCH CURRENT emp_cursor into :eno, :name, :salary;break;case 'X':case 'x':EXEC SQL CLOSE emp_cursor;return;}printf("name = %s(%d), salary = %.2f\n", name, strlen(name), salary);}printf("sqlca.sqlerrd[2] = %d\n", sqlca.sqlerrd[2]); // sqlca.sqlerrd[2]存放著Select語句作用的行數(shù) }
?
總結(jié)
以上是生活随笔為你收集整理的[Oracle]使用滚动游标的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: protues仿真器51单片机定时器内部
- 下一篇: 软考新思维--2017年上半年信息系统项