sql - 如何从 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 中做到这一点?
解决方案
目前尚不清楚为什么需要表 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)
推荐阅读
- angular - 当守卫返回 Observable 时,Angular 路由器不起作用
- omnet++ - 在 VANET 项目中修改信标
- java - 匹配相同的希伯来语单词总是返回 False
- kubernetes - Gatling - Taurus 查询结果
- firebase - 客户端断开连接时如何从 Firebase 实时数据库中删除数据
- javascript - jspdf数据的复用
- python - 尝试在 Python 3.7 conda 环境中安装 pytesseract
- xcode10 - 不同方案的不同捆绑标识符
- regex - Elasticsearch 查询名称与特定模式匹配的索引
- python - 按结果过滤关联规则 (rhs)