Pro*C中对Oracle PL/SQL块的调用

本文介绍如何通过Pro*C/C++调用Oracle PL/SQL块及过程函数,包括内嵌PL/SQL块的使用方法、注意事项,以及如何在内嵌块中调用PL/SQL过程和函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调用方法如下:

1、内嵌PL/SQL块 

EXEC SQL EXECUTE
BEGIN
SELECT ename,sal INTO :name,:salary
FROM emp
WHERE empno=:eno
END;
END-EXEC;

注意点1:PL/SQL中使用VARCHAR变量作为输入宿主变量是,必须初始化VARCHAR变长的长度成员(为长度成员赋初始值。例如:

varchar name[11];
float salary;
printf("请输入雇员名");
gets(name.arr);
name.
len=strlen(name.arr);
EXEC SQL EXECUTE
BEGIN
  selelct sal 
into :salary
  
from emp where upper(ename=upper(:name);
END;
END-EXEC;

注意点2:Pro*C/C++应用程序是,在PL/SQL块中不能直接使用C的指针和数组语法。

调用PL/SQL子程序:

1、内嵌PL/SQL块中调用过程

int eno;
char name[10];
int salary;
int dno;
...
EXEC SQL EXECUTE
BEGIN
  p_add_employee(:eno,:name,:salary,:dno);
END;
END-EXEC;
2、内嵌PL/SQL块中调用函数
int eno;
char name[10];
...
EXEC SQL EXECUTE
BEGIN
  :name:
=f_get_name(:eno);
END;
END-EXEC;

3、使用内嵌CALL语句调用过程
char name[10];
printf("请输入雇员名:");
EXEC SQL CALL  p_add_employee(:eno,:name,:salary,:dno);

4、使用内嵌CALL语句调用函数

int eno;
char name[10];
printf("请输入雇员好:");
EXEC SQL CALL  f_get_name(:eno,) into :name;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值