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

开发环境: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;
	}
	else
		printf("连接失败\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;
	else
		return 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)
)

表中数据如截图:


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值