TASKCTL中扩展mysql存储过程作业类型

我们都知道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,数据库名称、用户、密码等信息
#------------------------------------------------------------------------------

# 数据库主机IP 并去前后空格
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

 

时间: 2024-08-31 21:15:59

TASKCTL中扩展mysql存储过程作业类型的相关文章

java-jdbc中向MySQL传String类型数据

问题描述 jdbc中向MySQL传String类型数据 jdbc中向MySQL传String类型数据,还有jdbc中添加,删除,修改信息的代码,以及然后添加窗口背景图片 解决方案 关于MySQL到JDBC类型映射 解决方案二: http://www.cnblogs.com/wuyuegb2312/p/3872607.html

php程序中调用mysql存储过程实例

Mysql存储过程创建语法  代码如下 复制代码 CREATE PROCEDURE和CREATE FUNCTION CREATE PROCEDURE sp_name ([proc_parameter[,...]])     [characteristic ...] routine_body   CREATE FUNCTION sp_name ([func_parameter[,...]])     RETURNS type     [characteristic ...] routine_bod

Node.js中调用mysql存储过程示例_node.js

例子仅在windows下测试通过,没有放在linux下测试.如有问题,可以电邮给我~ 1.安装node.js.mysql,此处略(自行搜索吧)-: 2.创建一个名为test的数据库,然后建一张名为user_info的表(仅供测试)- 这里假定mysql使用的用户名为root,密码为123456 相应的mysql如下: 复制代码 代码如下: /** * 创建名为test的数据库 */ DROP DATABASE IF EXISTS test; CREATE DATABASE test; USE t

.net调用mysql存储过程中输出参数的问题,求救~~

问题描述 环境.net2.0+mysql5.0.37+Connector/Net5.2问题:在ASP.NET中调用mysql存储过程(输出参数名于存储过程输出参数名不同时),提示输出参数不存在:Parameter'@param1'notfoundinthecollection.当ASP.NET中修改输出参数名于存储过程中输出参数名相同的时候,提示一个新的参数未定义:Parameter'@1118079786param1'mustbedefined.而这个参数变量是自动生成的,在存储过程中我并没有

sql server中扩展存储过程随笔(几个有用的PROCEDURE小总结)

server|存储过程 在sql server中扩展存储过程直接使用的机会不是很多 我把我知道的几个有用的扩展存储过程使用方式总结如下:     --获得MS SQL的版本号 execute master..sp_msgetversion go Character_Value                              -------------------- ----------- ----------- 8.00.760             1           3  

mysql存储过程中的异常处理

定义异常捕获类型及处理方法:     DECLARE handler_action HANDLER          FOR condition_value [, condition_value] ...          statement            handler_action:          CONTINUE        | EXIT        | UNDO            condition_value:          mysql_error_code  

MySQL存储过程中的基本函数和触发器的相关学习教程_Mysql

MySQL存储过程的常用函数 一.字符串类 CHARSET(str) //返回字串字符集 CONCAT (string2 [,... ]) //连接字串 INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0 LCASE (string2 ) //转换成小写 LEFT (string2 ,length ) //从string2中的左边起取length个字符 LENGTH (string ) //string长度 LOAD_FI

mysql存储过程中的异常处理解析_Mysql

定义异常捕获类型及处理方法:  DECLARE handler_action HANDLER FOR condition_value [, condition_value] ... statement handler_action: CONTINUE | EXIT | UNDO condition_value: mysql_error_code | SQLSTATE [VALUE] sqlstate_value | condition_name | SQLWARNING | NOT FOUND

mysql 存储过程中变量的定义与赋值操作_Mysql

一.变量的定义 mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end 块中使用,变量必须定义在复合语句的开头,并且是在其它语句之前,也可以同时申明多个变量,如果需要,可以使用default赋默认值. 定义一个变量语法如下: declare var_name[,...] type[default value]看一个变量定义实例 declare last date;二.mysql存储过程变量赋值 变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set