最详细准确的KETTLE调用存储过程和带有返回值的存储函数讲解

1.前言

最近用到了kettle的存储过程,看到网上写的一些说明文档,大都说的含糊其辞,不太准确,这里分析了一下kettle的源码,对其用法大致的讲解一遍。这里大致看一下kettle的组件界面,

大致基本上都能看懂,但是大多数都被kettle的翻译误人子弟,组件是调用存储过程,但是存储过程中也存在一种特殊的类型,叫做存储函数。而且kettle也是支持调用存储函数的,下面讲解一下存储过程和存储函数的大致区别:

2.存储过程和存储函数介绍

语法区别:关键字不一样,存储函数比存储过程多了两个return。

本质区别:存储函数有返回值,可以自定义函数;而存储过程没有返回值。

如果存储过程想实现有返回值的业务,我们就必须使用out类型的参数。 即便是存储过程使用了out类型的参数,其本质也不是真的有了返回值,而是在存储过程内部给out类型参数赋值,在执行完毕后,我们直接拿到输出类型参数的值。

3.kettle调用存储过程

由于存储过程本质上不存在返回值,所以 ”返回值类型“ 选项一定要为空,否则执行会报错,找不到该存储过程。

*******简单的数据叠加求和存储过程 

 

4.调用存储函数 

由于存储是含有返回值的,所以要加上返回值字段名称。

5.总结 

 详细讲解以及存储函数的sql脚本请去下面的地址查看:

http://sharehoo.cn/topic/detail/439

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下步骤来调用带有返回值存储过程并使用其返回值: 1. 声明一个变量来存储返回值 2. 调用存储过程并将返回值赋值给变量 3. 使用该变量进行后续操作 以下是一个示例代码: ``` DELIMITER // CREATE PROCEDURE get_total_sales(IN date_from DATE, IN date_to DATE, OUT total_sales DECIMAL(10,2)) BEGIN SELECT SUM(sales_amount) INTO total_sales FROM sales WHERE sales_date BETWEEN date_from AND date_to; END // CREATE PROCEDURE main_procedure() BEGIN DECLARE sales DECIMAL(10,2); CALL get_total_sales('2021-01-01', '2021-02-01', sales); SELECT sales; END // ``` 在上面的示例中,我们首先创建了一个名为`get_total_sales`的存储过程,它将接受两个日期参数并返回总销售额。该存储过程返回值存储在一个名为`total_sales`的OUT参数中。 然后,我们创建了一个名为`main_procedure`的存储过程,它将调用`get_total_sales`存储过程,并将返回的值存储在名为`sales`的变量中。最后,我们使用`SELECT`语句输出变量的值。 请注意,我们在`main_procedure`中声明了变量`sales`,并将其传递给`get_total_sales`存储过程作为OUT参数。在`get_total_sales`存储过程中,我们使用`SELECT ... INTO`语句将返回值存储在OUT参数中。然后,该值将传递回`main_procedure`并存储在变量`sales`中。 通过这种方式,我们可以调用带有返回值存储过程,并在调用后使用返回值进行后续操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值