SQL中的指示變量及數(shù)組變量
在SQL數(shù)據(jù)庫中有多種變量,下面就將為您介紹SQL中的指示變量及數(shù)組變量,供您參考,希望對您學習SQL中的變量能夠有所幫助。
1.指示變量
實際上也是一類SQL變量,它被用來管理與其相關(guān)聯(lián)的宿主變量(即在SQL語句中充當輸入或輸出的變量)。每一個宿主變量都可定義一個指示器變量,主要用于處理空值(NULL)
指示器變量的說明基本同一般SQL變量一樣, 但必須定義成2字節(jié)的整型,如SHORT、INT。在SQL語句中引用時,其前也應加“:”(冒號),而且必須附在其相關(guān)聯(lián)的宿主變量之后,在C語句中,可獨立使用。當指示器變量為-1時,表示空值。例如:
EXEC SQL BEGIN DECLARE SECTION ;
INT dept_number;
SHORT ind_num;
CHAR emp_name;
EXEC SQL END DECLARE SECTION ;
Scanf(“90d %s”, & dept- number , dept – name );
If (dept_number ==0)
Ind_num = -1;
Else
Ind_num = 0;
EXEC SQL INSERT INTO DEPT (DEPTNO, DNAME)
VALUES(:dept_number:ind_num , :dept_name);
其中ind – num是dept – number 的指示器變量。當輸入的dept_number 值是0時, 則向DEPT 表的DEPTNO列插入空值。#p#
2.數(shù)組SQL變量
在SQL語句中引用數(shù)組時,只需寫數(shù)組名(名字前加冒號),不需寫下標,在C語句中用法如同C語言的數(shù)組變量。使用數(shù)組可大大降低網(wǎng)絡(luò)傳輸開銷。如要向一表插入100行數(shù)據(jù),如果沒有數(shù)組,就要重復100次, 而引用后,只須執(zhí)行一次insert語句、便可一次性插入。例如:
EXEC SQL BEGIN DECLARE SECTION;
Int emp_number[100];
Char emp_name[100][15];
Float salary[100],commission[100];
Int dept_number;
EXEC SQL END DECLARE SECTION;
….
EXEC SQL SELECT EMPNO,ENAME,SAL,COMM
INTO :emp_number,:emp_name,:salary,:commission
FROM EMP
WHERE DEPTNO=:dept_number;
在使用數(shù)組時,應注意以下幾點;
1)不支持指針數(shù)組
2)只支持一維數(shù)組, 而 emp-name [100][15]視為一維字符串#p#
3)數(shù)組***維數(shù)為32767,超出會報“paramter out of range”錯 誤
4) 在一條SQL語句中引用多個數(shù)組時,這些數(shù)組維數(shù)應相同
5)在VALUES , SET, INTO 或WHERE子名中, 不允許把簡單SQL變量與數(shù)組SQL變量混用
6)不能在DELARE部分初始化數(shù)組
例如:下面的引用是非法的
EXEC SQL BEGIN DECLARE SECTION;
Int dept_num [3] = {10,20,30};
EXEC SQL END DECLARE SECTION ;
EXEC SQL SELECT EMPNO, ENAME , SAL
INTO : emp_num [ i ], : emp_name [ i ], : salarg [ i ]
FROM EMP
7)在UPDATE或DELETE語句中,不允許把數(shù)組與CURRENT OF字句一起使用
【編輯推薦】