前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >proc 编程执行 insert、delete、update语句

proc 编程执行 insert、delete、update语句

作者头像
我与梦想有个约会
发布2023-10-20 18:26:29
3330
发布2023-10-20 18:26:29
举报
文章被收录于专栏:jiajia_deng

主题中提到的三种语句都是没有返回值的,所以我们实现起来也最简单,下面代码中包含了 insert、update 和 delete 三种语法的使用。值得注意的是在 insert 和 update 的时候使用宿主变量时的语法,在宿主变量前一定要加冒号,这是初学者最容易犯的错误。


代码实现

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
#include “sqlca.h”
EXEC SQL BEGIN DECLARE SECTION;
char \*serversid = "scott/tiger@orcl";

// 宿主变量
int deptno;
char dname\[20\];
char loc\[10\];
char newname\[20\];
char newloc\[10\];
EXEC SQL END DECLARE SECTION;
int main(int argc, char* argv[])
{
    int ret = 0;
// 连接 oracle 服务器
EXEC SQL CONNECT :serversid;
if (sqlca.sqlcode != 0)
{
    ret = sqlca.sqlcode;
    printf("connect oracle error... code = %d\\n", ret);
    return ret;
}

// 插入数据
deptno = 60;
strcpy(dname, "dengjia");
strcpy(loc, "hello");
// 请注意插入数据时使用宿主变量的语法
EXEC SQL insert into dept(deptno, dname, loc) values(:deptno, :dname, :loc);
if (sqlca.sqlcode != 0)
{
    ret = sqlca.sqlcode;
    printf("insert into error... code = %d\\n", ret);
    return ret;
}

// 更新数据
strcpy(newname, "mynewname");
strcpy(newloc, "mynewloc");
// update 数据时使用宿主变量的语法,更新 deptno 为 60 的数据
EXEC SQL update dept set dname = :newname, loc = :newloc where deptno = 60;
if (sqlca.sqlcode != 0)
{
    ret = sqlca.sqlcode;
    printf("update set error... code = %d\\n", ret);
    return ret;
}
printf("update success...\\n");
// 对上面执行的操作执行一次提交
EXEC SQL commit;

// 删除 dept 表中 deptno 为 50 的数据
EXEC SQL delete from dept where deptno = 50;
if (sqlca.sqlcode != 0)
{
    ret = sqlca.sqlcode;
    printf("delete from error... code = %d\\n", ret);
    return ret;
}
printf("delete success...\\n");
EXEC SQL commit release;
return 0;
}

代码编译

proc 预处理:proc insert.pc gcc 编译:gcc insert.c -o insert -I ORACLE_HOME/precomp/public -L ORACLE_HOME/lib -l clntsh

执行效果

表中的原有如下数据:

执行我们的程序(注意,在程序执行前,你要操作的数据必须都是真正提交到数据库中的,如果操作了未commit的数据,那么程序就会卡住不动):

执行后再次查看数据库:

多了一条 deptno = 60 的数据,而原来 deptno = 50 的数据被我们删除了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码实现
  • 代码编译
  • 执行效果
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档