从数据结构角度来分,SQL变量有简单变量,数组和指针。从功能上分,又有输入,出和指示器变量。而输入和输出变量又叫宿主变量。在SELECT或者FETCH语句的INTO子句所引用的变量叫输出SQL变量,因为ORACLE把从数据库表列中选择的值存放到这类变量中。而在其它SQL语句(INSERT,UPDATE….)中所包含的变量都叫输入SQL变量,ORACLE把输入SQL变量中的数据输入给ORACLE存入数据库表列中,或与数据库表列中的数据进行比较。
在PROC程序中含有C和SQL两种语言的语句,为了解决他们之间的信息传递,特引入了一种变量,称为SQL变量。
SQL变量可以在SQL语句中使用,也可以在C语言中使用,但是C语言的变量只能在C语言中使用。
int empno;
char ename[10];
float sal;
……
EXEC SQL SELECT ename, sal INTO :ename, :sal FROM emp
WHERE empno = :empno;
• SQL变量必须具有合法的内存地址,不能将数字或函数作为SQL变量,例如下面的代码是非法的:
#define MAX_EMP_NUM 9000
int get_dept();
……
EXEC SQL INSERT INTO emp (empno, ename, deptno) VALUES
(:MAX_EMP_NUM + 10, ’CHEN’, :get_dept());