文档详情

第八章数据库编程_补充材料_ORACLEproc.ppt

发布:2017-04-24约3.33千字共20页下载文档
文本预览下载声明
说明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
显示全部
相似文档