首页 > 解决方案 > 如何从 AS400 SQL 中的函数调用存储过程

问题描述

我有一个将数字转换为单词的存储过程

NUMBER_TO_WORDS (NUMBER, WORDS)

我尝试创建一个这样的函数:

CREATE FUNCTION CONVERT_TO_WORDS (NUMBER CHAR (14)) RETURNS TABLE (NUMBER CHAR (14), WORDS CHAR (256)) RETURN
CALL NUMBER_TO_WORDS (NUMBER, WORDS)

这样您就可以像这样拨打电话:

SELECT WORDS FROM TABLE CONVERT_TO_WORDS ('123456')

但此语法在 5R6 版本中不被接受

有没有办法在 AS400 中做到这一点?

标签: sqlfunctiondb2ibm-midrangesp

解决方案


目前尚不清楚为什么需要表 UDF。
这是一个假设 SP 未声明为的标量示例MODIFIES SQL DATA

CREATE OR REPLACE FUNCTION CONVERT_TO_WORDS (NUMBER CHAR (14))
RETURNS CHAR (256)
BEGIN
  DECLARE L_WORDS CHAR(256);
  CALL NUMBER_TO_WORDS (NUMBER, L_WORDS);
  RETURN L_WORDS;
END

用法:

SELECT NUMBER, CONVERT_TO_WORDS (NUMBER) AS WORDS
FROM (VALUES '12345', '67890') T (NUMBER)

推荐阅读