日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。