使用go-oci8连接oracle,如何调用带返回值的数据库存储函数?

Adnachiel_1989 · · 1335 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

使用Oracle数据库开发,然而go对oracle的连接只能借助go-oci8。现在基本数据库增删改查已经实现,在调用数据库存储函数的时候出现了问题。存储函数包括三个输入值一个输出值,大概格式如下所示: create or replace function FN_TEST( -- 'ok' 成功 -- 'false' 失败 Id in varchar2, -- ID UserId in varchar2, -- 工号 Content in varchar2 -- 意见 ) return varchar2 as Result varchar2(50); begin Result := 'false'; -- 具体处理过程 IF ... THEN Result := 'ok'; END IF; return(Result); end FN_TEST; 现在想在go程序中调用该存储函数,写法如下: stmt, _ := db.Prepare("call FN_TEST(:1,:2,:3)") _,err := stmt.Exec(Id, UserId, Content) 执行之后提示函数名错误。经网上查找,知道无法用call执行带返回值的函数。使用java语言开发的时候,可以使用CallableStatement函数实现,大概格式如下: fn = "{?=call FN_TEST(?,?,?)}"; CallableStatement cstmt = con.prepareCall(fn); cstmt.registerOutParameter(1, Types.VARCHAR); cstmt.setString(2, id); cstmt.setString(3, userid); cstmt.setString(4, content); cstmt.execute(); 想请问在go语言中如何实现这样的调用?感谢各位!

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1335 次点击  
加入收藏 微博
3 回复  |  直到 2017-02-20 09:35:16
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传