createProcedure - 创建存储过程
db.createProcedure(<code>)
Sdb
该函数用于在数据库对象中创建存储过程。
code( 函数,必填 )
指定符合 JavaScript 语法的自定义函数,格式如下:
function 函数名(参数) { 函数体 }
函数体中可以调用其他函数。如果调用了不存在的函数,需要保证存储过程运行时相关函数已存在。
函数名全局唯一,不支持重载。
每个函数均全局可用,随意删除一个函数可能导致相关存储过程运行失败。
存储过程会屏蔽所有标准输出和标准错误。同时,不建议在函数定义或执行时加入输出语句,大量的输出可能会导致存储过程运行失败。
函数返回值可以是除 Sdb 以外的任意类型数据。
Note:
独立模式部署的集群,不支持创建存储过程。
函数执行成功时,无返回值。
函数执行失败时,将抛异常并输出错误信息。
当异常抛出时,可以通过 getLastErrMsg() 获取错误信息或通过 getLastError() 获取错误码。更多错误处理可以参考常见错误处理指南。
v2.0 及以上版本
集合 sample.employee 存在如下记录:
{id: 1, Name: "Jack", age: 25}
连接协调节点
> var coord = new Sdb("sdbserver", 11810)
创建存储过程
> coord.createProcedure(function getAll() { return db.sample.employee.find(); })
Note:
db 在存储过程中已初始化。用户可以使用该全局 db 指代执行该存储过程的会话所对应的鉴权信息。
通过 eval() 执行该存储过程
> coord.eval("getAll()") { "_id": { "$oid": "60cd4c2e1a52b21546a15826" }, "id": 1, "Name": "Jack", "age": 25 }
用户可以通过 listProcedures() 查看已创建的存储过程信息。