第八章数据库编程_补充材料_ORACLEproc.ppt
文本预览下载声明
说明SQL通讯区 ?? ;伪类型VARCHAR ?? ;在ORACLE上注册和注销 ?? ;在ORACLE上注册和注销 ?? ;创建一个表 ?? ;EXEC SQL CONNECT :uid IDENTIFIED BY :pwd
Printf(“connected to oracle as user%s\n”,uid.arr);
EXEC SQL CREATE TABLE emp
(empno number, ename char(15), job char(10),
mgr number, hiredate date, sal number,
deptno number);
Printf(“table emp created! \n”);
EXEC SQL COMMIT WORK RELEASE;
Exit(0);};1.EXECUTE IMMEDIATE
预编译任何SQL语句(除SELECT)并执行之。 SQL语句可以是文字量,但它可以不包括任何主变量(既不包括输入,也不包括输出主变量)
EXECUTE IMMEDIATE只能带一个参数,执行一次
2.PREPARE 和EXECUTE语句
预编译任何SQL语句(除SELECT)并执行之。语句可以包括输入或输出主变量。它的SQL语句仅被语法分析一次,可带多个参数,对任何SQL语句可多次使用,但必须保证变量的数目和相应的数据类型必须相同。
PREPARE完成:预编译(分析)该SQL语句,并为其提供一个语句名。
EXECUTE执行刚预编译的语句,使用USING提供的值。;??3. PREPARE 和FETCH语句
允许使用SELECT语句, 语句可以包括输入或输出主变量。这种方式的顺序是PREPARE ,DECLEAR,OPEN和FETCH.变量的数目和相应的数据类型必须相同。
4.使用赋值和定义描述符
允许使用任何SQL语句,包括查询结果为单记录或多记录的SELECT语句。;1.EXECUTE IMMEDIATE 立即执行方式?? ;EXECUTE IMMEDIATE 实例 ;strcpy(uid.arr,”SCOTT”); uid.len=strlen(uid.arr);
strcpy(pwd.arr,”TIGER”); pwd.len=strlen(pwd.arr);
EXEC SQL WHENEVER SQLERROR STOP;
EXEC SQL CONNECT :uid IDENTIFIED BY :pwd
Printf(“connected to oracle as user%s\n”,uid.arr);
strcpy(select,”UPDATE EMP SET COMM=100
WHERE”);
Printf(“please enter where clause for the following:\n”);
Printf(“%s”,select);
Scode=scanf(“%s”,where);
If(scode==EOF||scode==0); {Printf(“invalid entry!\n”); exit(1);}
Strcat(select,where);
EXEC SQL EXECUTE IMMEDIATE:select;
Printf(“%d records updated.\n”,sqlca.sqlerrd[2]);
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL COMMIT WORK RELEASE;
Exit(0);
};2. PREPARE 和EXECUTE语句准备执行方式?? ;PREPARE 和EXECUTE实例 ;strcpy(uid.arr,”SCOTT”); uid.len=strlen(uid.arr);
strcpy(pwd.arr,”TIGER”); pwd.len=strlen(pwd.arr);
EXEC SQL WHENEVER SQLERROR GOTO errpt;
EXEC SQL CONNECT :uid IDENTIFIED BY :pwd
Printf(“connected to oracle as user%s\n”,uid.arr);
strcpy(select,”UPDATE EMP SET COMM=:comm
WHERE”);
Printf(“please enter where clause for the following:\n”);
Printf(“%s”,select
显示全部