TASKCTL支持任意作业类型的扩展,但目前TASKCTL 4.1.3版本中并没有内置mysql存储过程的作业插件。通过介绍使TASKCTL支持调度mysql存储过程作业类型的步骤,一方面解决一些朋友迫切的mysql存储过程调度需求,另一方面抛砖引玉,让大家能够在TASKCTL中扩展更多的适应自己需求的作业插件。

1、在$TASKCTLDIR/src/plugin/mysqlproc/shell/目录中新增cprunmysqlproc.sh作业插件,实际上就是一个shell程序,代码如下:

#!/bin/sh

if [ $# -ne 3 ]
then
echo "Param error !"
echo "Usage: $0 progname para expara"
exit 126
fi #------------------------------------------------------------------------------
# 第一步: 接收参数
#------------------------------------------------------------------------------
ProgName=$1
Para=`echo $2` #此处为了去前后空格,以便判断是否真正有入口参数
ExpPara=$3 #------------------------------------------------------------------------------
# 第二步: 解析exppara,分别获取数据库HOST,数据库名称、用户、密码等信息
#------------------------------------------------------------------------------ # 数据库名 并去前后空格
tmpstr=`echo ${ExpPara}|awk -F ',' '{print $1}'`
DBHOST=`echo ${tmpstr}` # 数据库名 并去前后空格
tmpstr=`echo ${ExpPara}|awk -F ',' '{print $2}'`
DBNAME=`echo ${tmpstr}` # 数据库用户 并去前后空格
tmpstr=`echo ${ExpPara}|awk -F ',' '{print $3}'`
DBUSER=`echo ${tmpstr}` # 数据库密码 并去前后空格
tmpstr=`echo ${ExpPara}|awk -F ',' '{print $4}'`
DBPASSWD=`echo ${tmpstr}` #------------------------------------------------------------------------------
# 第三步: 执行存储过程
#------------------------------------------------------------------------------
sqlstr=`mysql -h${DBHOST} -u${DBUSER} -p${DBPASSWD} <<EOF 2>&1
call ${DBNAME}.${ProgName}('${Para}',@retcode,@retmsg);
select '\r';
select @retcode;
select @retmsg;
quit
EOF` #------------------------------------------------------------------------------
# 第四步: 插件返回
#------------------------------------------------------------------------------ echo "================================================================================" result=`echo $sqlstr |awk '{print $3,$5}'`
out=`echo $result |awk '{print $1}'`
CMSG=`echo $result |awk '{print $2}'`
echo ${CMSG}
echo ""
if [ $out -eq 0 ]
then
exit 0
else
exit 1
fi

  

2、在桌面软件admin中进入"任务类型"功能中,设置mysqlproc作业类型,如下图所示:

3、在桌面软件designer中设计mysqlproc作业如下代码片段:

 <!-- 按照插件程序的要求,para属性中设置一个输入参数,exppara属性中设置 主机名,数据库名,用户名,用户密码,用逗号隔开-->
<mysqlproc>
<name>MainModul_JobNode0</name>
<progname>proc_taskctl</progname>
<para>$(mysql_in_param1)</para>
<exppara>$(mysqlhost),$(mysqldbname),$(mysqluser),$(mysqlpwd)</exppara>
</mysqlproc>

4、附mysql存储过程程序 proc_taskctl 示例代码:

CREATE PROCEDURE `proc_taskctl`(IN msg VARCHAR(20),OUT retcode int,OUT retmsg varchar(255))
BEGIN
SET retmsg = concat('hello:',msg);
SET retcode = 0;
END

5、至此就可以调用mysql存储过程了。 

taskctl实现自定义mysql存储过程作业类型调用的更多相关文章

  1. MySQL存储过程_创建-调用

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的"脚本" 创建存储过程 调用存储过程 存储过程体 语句块标签 存储过程的参数 in:向过程里传参 out:过程向 ...

  2. mysql存储过程且mybatis调用

    首先,需要执行符DELIMITER ,建议用//,即在存储过程开始前定义delimiter //,在结束后加上//,最后加上DELIMITER ; 具体原因@参考文章1写的很清楚,不再赘述. 参考文章 ...

  3. mysql 存储过程--- 创建,调用,删除

    DELIMITER //CREATE PROCEDURE p_addscore(nums INT,OUT retrows INT)BEGINDECLARE i INT DEFAULT 0;add_lo ...

  4. MySQL存储过程的创建及调用

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 1.创建存储过程 2.调用存储过程 3.存储过程体 4.语句块标签 存储过程的参数 1.in:向过程里传参 2.out:过 ...

  5. Mysql存储过程调用

    mysql存储过程实例教程 发布时间:2014-04-09编辑:JB01 这篇文章主要介绍了mysql存储过程的使用方法,mysql存储过程实例教程,有需要的朋友参考下.   1.1create  p ...

  6. MySQL存储过程(一)

    1.1 CREATE  PROCEDURE (创建) CREATE PROCEDURE存储过程名 (参数列表) BEGIN SQL语句代码块 END 注意: 由括号包围的参数列必须总是存在.如果没有参 ...

  7. MySQL存储过程(转载)

    转自:http://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html 1.1         CREATE  PROCEDURE  (创 ...

  8. MySQL存储过程和自定义函数、Navicat for mysql、创建存储过程和函数、调用存储过程和函数的区别

    1 MySQL存储过程和函数 过程和函数,它们被编译后保存在数据库中,称为持久性存储模块(Persistent Stored Module,PSM),可以反复调用,运行速度快. 1.1 存储过程 存储 ...

  9. 基本开题的感觉是了-MySQL继续继续(自定义函数&存储过程)

    hi 感觉论文开题基本确定了,凯森 1.MySQL -----自定义函数----- ----基本 两个必要条件:参数和返回值(两者没有必然联系,参数不一定有,返回一定有) 函数体:合法的SQL语句:以 ...

随机推荐

  1. zookeeper-开始

    ZooKeeper:为分布式应用提供的分布式协调服务 ZooKeeper提供一系列原语用于分布式应用构建更高层次的服务,如同步.配置维护.分组以及命名空间. 设计目标: ZooKeeper足够简单且可 ...

  2. vue2.0 配置 选项 属性 方法 事件 ——速查

    全局配置 silent  设置日志与警告  optionMergeStrategies   合并策略  devtools  配置是否允许vue-devtools  errorHandler    错误 ...

  3. TortoiseGit保存密码

    TortoiseGit保存密码 方法一:使用Bash命令 1.设置name和emailgit config --global user.name "yilei"git config ...

  4. 这可能是最low的发布dotnet core站点到centos7

    前言 不得不说:我在chrome上写了好长一段,贴了23张图,然后一个crash..我想说我电脑上的chrome已经crash太多次了 以后一定要搞离线编辑的. 正文 什么是.net core,bal ...

  5. js模拟jq获取id

    js模拟jq获取id: (jquery)需要自己添加 <!DOCTYPE html> <html lang="en"> <head> <m ...

  6. 5.VBS的一些约定,提高可读性

    1.变量命名约定 2.变量作用域 1)过程级,在事件中,函数或者子过程中 2)Script级,在head部分 原则,定义尽量小的作用域 3.在某个过程开头应该包括这些注释

  7. Handlebars.js 模板引擎

    介绍 Handlebars 是 JavaScript 一个语义模板库,通过对view和data的分离来快速构建Web模板.它采用"Logic-less template"(无逻辑模 ...

  8. web前段学习2017.6.13

    CSS---表现层,修饰和表现html文档,为了解决结构层和表现层分离的问题. 通过CSS极大的提高了工作效率,方便工作人员维护和管理CSS:层叠样式表,目前用的最广泛的css版本为css2,最新版本 ...

  9. Python3 面向对象程序设计(类)

    一.自定义类 1.属性与方法 格式: class classname: def __init__(self,a,b): self.a=a   self.b=b def ... >一般都有一个__ ...

  10. java中方法的定义

    所谓的方法(将方法称为函数)指的就是一段可以被重复调用的代码块. 对于方法的返回值类型有两种使用形式: · 有数据返回:返回值类型就使用 Java 中定义的数据类型: · 无数据返回:使用 void ...