admin() 和 task() 函数执行相同的任务,但产生不同的返回代码类型。如果您想要一个
整数返回代码,
则使用 admin() 函数,
或者如果您想要一个文本的返回代码,
则使用 task()
函数。
当您运行 admin() 或 task() 函数时,函数:
执行指定的操作。
返回一个表示函数成功还是失败的值。
在 sysadmin 数据库的 command_history 表内插入一行。
admin() 和 task() 函数的返回代码以不同的格式表明函数是成功了还是失败了:
task() 函数返回一个文本的消息。该消息也插入到 task() 函数插入到
command_history 表内那个新行中的 cmd_ret_msg 列。
admin() 函数返回一个整数。这个数也插入到 admin() 函数插入到
command_history 表内那个新行中的 cmd_ret_msg 列。
如果这个值大于零,则函数成功,且在 command_history 表内插入一新行。
如果这个值是零,
则函数成功,
但是 GBase
8s 可能不在 command_history 表
内插入一新行。
如果这个值小于零,
则函数失败,
但是在 command_history 表内插入一新行。
admin() 或 task() 函数指定的操作发生在一个单独的事务中,
与在 command_history 表
内插入新行的事务分开。如果成功地执行命令,但是在 command_history 表内插入失败,
则命令生效,但是一个 online.log 错误条目指明该问题。
当调用这个函数时,如果 command_history.cmd_number 连续计数器是 200,且命令成功,
则 GBase 8s 执行命令并返回整数 201。如果命令失败,则这个示例返回值 -201。
假定 task() 函数执行了同一命令:
EXECUTE FUNCTION task("check extents");
这个命令指导数据库服务器检查 extent,并返回指定命令成功或失败的消息。
当调用这个函数时,如果 command_history.cmd_number 连续计数器是 201,且命令失败,
则返回值是 -202。假定 DBSA 调用的下一个 SQL 管理 API 函数是这个:
EXECUTE FUNCTION admin('create dbspace',
'dbspace2', '/work/CHUNKS/dbspace2', "20M");
如果在这种情况下命令成功,则返回的值是 203。DBSA 可使用下列查询来检查这些调用
admin() 函数插入 command_history 表的两行:
SELECT * FROM command_history WHERE cmd_number IN (202,203);
GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 673 -
这个查询返回两行: