Pro*c源程序中使用宿主结构保存查询结果

来源:互联网 发布:q语言 知乎 编辑:程序博客网 时间:2024/05/19 23:55

开发环境:VC6 + XP + Oracle10

 Pro*c源程序如下:

/*功能:演示了在pro*c源程序中使用结构体(宿主结构)来保存查询结果使用宿主结构的注意事项1. 结构成员的数据类型、顺序必须与内嵌SQL语句中列的数据类型和顺序匹配2. 宿主结构与PL/SQL的记录类型(RECORD)非常类似。但注意,在开发内嵌PL/SQL程序时不能将宿主结构作为PL/SQL记录变量的宿主变量3. 不能使用嵌套的宿主结构4. 不能使用C联合(union)作为宿主结构,也不能在宿主结构中嵌套联合。*/#include <stdio.h>#include <string.h>#include <stdlib.h>#include <sqlca.h>int connect();void sql();void sql_error();void main(){EXEC SQL WHENEVER SQLERROR DO sql_error();if(connect() == 0){sql();EXEC SQL COMMIT RELEASE;}elseprintf("连接失败\n");}int connect()// connect to oracle database{char username[10], password[10], server[10];strcpy(username, "llp");strcpy(password, "llp");strcpy(server, "ORAL");EXEC SQL CONNECT :username IDENTIFIED BY :password USING :server;if(sqlca.sqlcode == 0)return 0;elsereturn sqlca.sqlcode;}void sql_error()// print error infomation{printf("%.*s\n", sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc);}void sql()// 执行SQL语句{char iname[10];struct// 定义结构体及变量{char name[10];float salary;}emp_record;printf("请输入iname: ");gets(iname);// 接收name的输入fflush(stdin);EXEC SQL Select name, salary into :emp_record from PLSQLTEST where name=:iname;printf("name = %s, salary = %.f\n", emp_record.name, emp_record.salary);}


对应的表结构为:

create table PLSQLTEST(  SALARY NUMBER,  NAME   VARCHAR2(10))

表中数据如截图:


 

原创粉丝点击