文章转自: [url]http://www.oraclefans.cn/forum/showtopic.jsp?rootid=410[/url]
在PRO*C中调用存储过程和函数
在PRO*C中可以在一个嵌入式PL/SQL块中调用一个存储过程或函数。以下通过例子来说明调用的方法。比如说目前有以下几个存储过程和函数:
l procedure1() :没有参数的存储过程
l procedure2 (param1 number, param2 varchar2):有2个参数的存储过程
l function1() return number :没有参数的函数
l function2(param1 number) return number:有一个参数的函数
调用PROCEDURE1的嵌入式PL/SQL语法为:
EXEC SQL EXECUTE
BEGIN
procedure1;
END;
END-EXEC;
调用PROCEDURE2的嵌入式PL/SQL语法为:
int hostvar1;
char hostvar2(20);
EXEC SQL EXECUTE
BEGIN
/* hostvar1和hostvar2是两个在C语言中定义的宿主变量 */
procedure2(:hostvar1, :hostvar2);
END;
END-EXEC;
调用FUNCTION1的语法是:
int hostvar;
EXEC SQL EXECUTE
BEGIN
:hostvar:= function1;
END;
END-EXEC;
调用FUNCTION2的语法:
int hostvar,returnvar;
EXEC SQL EXECUTE
BEGIN
:returnvar := function2(:hostvar);
END;
END-EXEC;
在PRO*C中调用存储过程和函数
在PRO*C中可以在一个嵌入式PL/SQL块中调用一个存储过程或函数。以下通过例子来说明调用的方法。比如说目前有以下几个存储过程和函数:
l procedure1() :没有参数的存储过程
l procedure2 (param1 number, param2 varchar2):有2个参数的存储过程
l function1() return number :没有参数的函数
l function2(param1 number) return number:有一个参数的函数
调用PROCEDURE1的嵌入式PL/SQL语法为:
EXEC SQL EXECUTE
BEGIN
procedure1;
END;
END-EXEC;
调用PROCEDURE2的嵌入式PL/SQL语法为:
int hostvar1;
char hostvar2(20);
EXEC SQL EXECUTE
BEGIN
/* hostvar1和hostvar2是两个在C语言中定义的宿主变量 */
procedure2(:hostvar1, :hostvar2);
END;
END-EXEC;
调用FUNCTION1的语法是:
int hostvar;
EXEC SQL EXECUTE
BEGIN
:hostvar:= function1;
END;
END-EXEC;
调用FUNCTION2的语法:
int hostvar,returnvar;
EXEC SQL EXECUTE
BEGIN
:returnvar := function2(:hostvar);
END;
END-EXEC;