proc调用存储过程
2010-06-30 21:33
316 查看
/*
*功能:proc调用存储过程
*源文件:procedure.pc
*/
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
/*#define SQLCA_NONE*/
EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
char db_name[25] = "dbname";
EXEC SQL END DECLARE SECTION;
void errorHandle(char *sm)
{
char buf[1024];
long bufLen,msgLen,fc;
sprintf(buf, "执行数据库操作(%s)失败, ORA ERROR:%.70s, SQLCA.SQLCODE=%d", sm, sqlca.sqlerrm.sqlerrmc, sqlca.sqlcode);
printf("%s/n", buf);
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL AT :db_name ROLLBACK WORK;
return;
}
void connect()
{
EXEC SQL BEGIN DECLARE SECTION;
char connString[25] = "nmc/nmc@atest_229";
EXEC SQL END DECLARE SECTION;
EXEC SQL WHENEVER SQLERROR DO errorHandle("Connect Database");
EXEC SQL AT :db_name CONNECT :connString;
}
void disconnect()
{
EXEC SQL WHENEVER SQLERROR DO errorHandle("Disconnect Database");
EXEC SQL AT :db_name COMMIT WORK RELEASE;
}
int main()
{
connect();
EXEC SQL AT :db_name EXECUTE
BEGIN
objects_exs_insert(76);
END;
END-EXEC;
disconnect();
printf("procedure execute successful/n");
return 0;
}
附:存储过程
create or replace procedure objects_exs_insert
(id in objects_exs.Sys_Int_Id%TYPE) is
begin
insert into objects_exs(sys_int_id) values(id);
end objects_exs_insert;
*功能:proc调用存储过程
*源文件:procedure.pc
*/
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
/*#define SQLCA_NONE*/
EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
char db_name[25] = "dbname";
EXEC SQL END DECLARE SECTION;
void errorHandle(char *sm)
{
char buf[1024];
long bufLen,msgLen,fc;
sprintf(buf, "执行数据库操作(%s)失败, ORA ERROR:%.70s, SQLCA.SQLCODE=%d", sm, sqlca.sqlerrm.sqlerrmc, sqlca.sqlcode);
printf("%s/n", buf);
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL AT :db_name ROLLBACK WORK;
return;
}
void connect()
{
EXEC SQL BEGIN DECLARE SECTION;
char connString[25] = "nmc/nmc@atest_229";
EXEC SQL END DECLARE SECTION;
EXEC SQL WHENEVER SQLERROR DO errorHandle("Connect Database");
EXEC SQL AT :db_name CONNECT :connString;
}
void disconnect()
{
EXEC SQL WHENEVER SQLERROR DO errorHandle("Disconnect Database");
EXEC SQL AT :db_name COMMIT WORK RELEASE;
}
int main()
{
connect();
EXEC SQL AT :db_name EXECUTE
BEGIN
objects_exs_insert(76);
END;
END-EXEC;
disconnect();
printf("procedure execute successful/n");
return 0;
}
附:存储过程
create or replace procedure objects_exs_insert
(id in objects_exs.Sys_Int_Id%TYPE) is
begin
insert into objects_exs(sys_int_id) values(id);
end objects_exs_insert;
相关文章推荐
- 调用存储过程的ExecProc
- C#中调用mysql存储过程出现SELECT command denied for table 'proc'
- VB中调用带参数存储过程的实现(数据库)
- oracle 存储过程在不同模式下调用的问题
- JdbcTemplate调用存储过程的一些方法:
- asp.net 调用带有输出参数的存储过程
- C#调用Oracle带有out游标参数存储过程的问题
- 理解JBDC更新计数行以及调用存储过程返回多个结果集
- ASP调用存储过程教程
- 数据库学习第二季第五集:编程语言的存储过程和函数机制及其编程语言的调用学习总结
- java调用存储过程
- mysql存储过程的创建,删除,调用及其他常用命令
- SqlServer Bug:扩展存储过程一直运行出现等待类型PREEMPTIVE_OS_GETPROCADDRESS
- jdbc调用通用存储过程完成分页
- Mybatis调用MySQL存储过程
- Ibatis调用存储过程调用存储过程
- mybatis调用存储过程
- 使用SQLHelper类调用带输出、返回参数的存储过程
- C#调用存储过程带输出参数或返回值
- c# 调用存储过程方法