- createProcedure()
- 语法
- 参数描述
- 自定义函数
- 返回值
- 示例
createProcedure()
语法
db.createProcedure( <code> )
在数据库对象中创建存储过程。
参数描述
参数名 | 参数类型 | 描述 | 是否必填 |
---|---|---|---|
code | 自定义函数 | 标准函数定义,不是字符串类型,在输入参数时不能使用引号。 | 是 |
Note:
- 推荐直接使用存储过程中已初始化全局的 db,且全局 db 采用当前执行该存储过程的会话的鉴权信息,如:
db.createProcedure( function getAll() { return db.foo.bar.find(); } )
。- 自己初始化 db 的形式为
var db = new Sdb()
,db 采用当前执行该存储过程的会话的鉴权信息。如果需要加入其它用户名和密码,为var db = new Sdb( 'usrname','passwd' )
。这里需要注意的是,存储过程只能运行在已连接上的 db,不提供远程连接其他 db 的方法。在不需要鉴权的情况下,即使如var db = new Sdb( 'hostname', 'servicename' )
语句正常执行。得到的 db 仍然是本地 db。- db 角色必须为协调节点。standalone 模式不提供存储过程功能。
自定义函数
- 函数定义
(1) 函数必须包含函数名,不能使用如:function(x,y) { return x+y; }。
(2) 在函数定义时可以调用其他函数甚至是不存在的函数,但需要保证运行时所有函数已存在。
(3) 函数名全局唯一,不提供重载。
(4) 每个函数均在全系统可用,随意删除一个存储过程可能导致他人运行失败。
- 函数参数
- native type of JS
- 函数输出
函数中所有标准输出,标准错误会被屏蔽。同时不建议在函数定义或执行时加入输出语句,大量的输出可能会导致存储过程运行失败。
- 函数返回值
函数返回值可以是除 db 以外任意类型数据,如:function getCL() { return db.foo.bar; }。
返回值
无返回值,出错抛异常,并输出错误信息,可以通过 getLastErrMsg() 获取错误信息 或 通过 getLastError() 获取错误码。关于错误处理可以参考常见错误处理指南 。
示例
- 创建 sum 函数
- > db.createProcedure( function sum(x,y) { return x+y; } )
创建之后可以使用 db.listProcedures() 查看函数信息。