
SQL中的指示变量及数组变量l.docx
2页在 SQL 数据库中有多种变量,下面就将为您介绍 SQL 中的指示变量及数组变量,供您参考,希望对您学习 SQL 中的变量能够有所帮助1.指示变量实际上也是一类 SQL 变量,它被用来管理与其相关联的宿主变量(即在 SQL 语句中充当输入或输出的变量) 每一个宿主变量都可定义一个指示器变量,主要用于处理空值(NULL ) 指示器变量的说明基本同一般 SQL 变量一样, 但必须定义成 2 字节的整型,如SHORT、INT 在 SQL 语句中 引用时, 其前也应加“:”( 冒号),而且必须附在其相关联的宿主变量之后,在 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;ElseInd_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 列插入空值2.数组 SQL 变量在 SQL 语句中引用数组时,只需写数组名(名字前加冒号) ,不需写下标,在 C 语句中用法如同 C 语言的数组变量使用数组可大大降低网络传输开销如要向一表插入 100行数据,如果没有数组,就要重复 100 次, 而引用后,只须执行一次 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,COMMINTO :emp_number,:emp_name,:salary,:commission FROM EMP WHERE DEPTNO=:dept_number;在使用数组时,应注意以下几点;1)不支持指针数组2)只支持一维数组, 而 emp-name [100][15]视为一维字符串3)数组最大维数为 32767,超出会报“paramter out of range”错 误4) 在一条 SQL 语句中引用多个数组时,这些数组维数应相同5)在 VALUES , SET, INTO 或 WHERE 子名中, 不允许把简单 SQL 变量与数组 SQL 变量混用6)不能在 DELARE 部分初始化数组例如:下面的引用是非法的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 EMP7)在 UPDATE 或 DELETE 语句中,不允许把数组与 CURRENT OF 字句一起使用文章转载自网管之家:。












