• 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) 每个函数均在全系统可用,随意删除一个存储过程可能导致他人运行失败。

    • 函数参数
    1. native type of JS
    • 函数输出

    函数中所有标准输出,标准错误会被屏蔽。同时不建议在函数定义或执行时加入输出语句,大量的输出可能会导致存储过程运行失败。

    • 函数返回值

    函数返回值可以是除 db 以外任意类型数据,如:function getCL() { return db.foo.bar; }。

    返回值

    无返回值,出错抛异常,并输出错误信息,可以通过 getLastErrMsg() 获取错误信息 或 通过 getLastError() 获取错误码。关于错误处理可以参考常见错误处理指南 。

    示例

    • 创建 sum 函数
    1. > db.createProcedure( function sum(x,y) { return x+y; } )

    创建之后可以使用 db.listProcedures() 查看函数信息。