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

阅读 118 次  2 条评论
使用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语言中如何实现这样的调用?感谢各位!

2条回复

主题回复:

(您需要 登录 后才能回复 没有账号 ?)
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet