使用者能夠將任何乙個宿主變數同乙個指示變數進行關聯。指示器變數必須被定義為 2 個字
節的整數型別( short),在 sql 語句中,如果沒有指定 indicator 關鍵字,指示變數必須
緊跟在與其關聯的宿主變數後。如果使用 declare section 宣告宿主變數,則相關指示
變數也必須採用 declare section 進行宣告。
:host_variable indicator :indicator_variable
或者:host_variable:indicator_variable
通過在宿主變數後用指示變數, 檢測是否返回了null.
exec sql begin declare section;
char desc[35];
short ind_desc;
exec sql end declare section;
…exec sql select emp_desc into :desc :ind_desc from emp where emp_no=7788;
if(ind_desc < 0)
cout
<
else
cout
<< desc << endl;
varchar型別在經過proc預編譯後會變成
typedef struct varchar;
可以看出,字串部分儲存在arr指向的記憶體空間,所以對varchar型別的變數進行字串訪問的時候需要提取arr成員,綜合例項如下:
#include
#include
#include
#include "sqlca.h"
//演示 指示變數,用來主的對宿主變數做說明
extern sqlgls(char * , size_t *, size_t * );
extern sqlglmt(void *,char *,size_t *,size_t *);
void sqlerr02()
void nodata()
}exec sql begin declare section;
char *usrname = "scott";
char *passwd = "lzj123529";
char *serverid = "orcl";
int deptno;
varchar dname[20]; //varchar型別 和 char 型別的區別. 與編譯選項有關係
short dname_ind;
varchar loc[20];
short loc_ind;
exec sql end declare section;
void connet()
else
}//修改單挑資料
int main()
if (dname_ind == -1)
if (loc_ind == -1)
printf("any key con....\n");
getchar();
printf("deptno:%d, dname:%s, loc:%s\n", deptno, dname.arr, loc.arr);
loc_ind = -1;
exec sql update dept set loc=:loc:loc_ind where deptno=:deptno;//將之前獲取的條目的loc更新為null
if (sqlca.sqlcode != 0)
exec sql commit work release;
printf("return ok...\n");
return ret ;
}
效果如下
oracle@lzj:~$ ./array
connect ok...
please enter deptno: 30
any key con...
.deptno:30, dname:sales, loc:chicago
return ok...
索引指示器
索引指示器 其目的包括 1.了解什麼是 索引指示器 2.如何實現 索引指示器 3.過載 索引指示器 4.了解如何實現多引數的 索引指示器 索引指示器並不難使用。它們的用法跟陣列相同。在乙個類內部,你可以按照你的意願來管理一組資料的集合。這些物件可以是類成員的有限集合,也可以是另外乙個陣列,或者是一些...
進度指示器
uiprogressview 進度指示器 uiprogressview 與uiactivityindicatorview 相似,只不過它提供了乙個介面讓你可以顯示乙個類似進度條的東西,這樣就能讓使用者知道當前操作完成了多少 告知使用者離操作結束還多遠 一.建立 uiprogressview prog...
索引指示器
官方描述 索引器允許類或結構的例項就像陣列一樣進行索引。索引器形態類似於,不同之處在於它們的取值函式採用引數。這一功能在建立集合類的場合特別有用,而在其他某些情況下,比如處理大型檔案或者抽象有些資源等,能讓類具有類似陣列行為也是非常有用的。大致結構 this argument list getset...