我有一个将数字转换为单词的存储过程
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中是否有办法做到这一点?
5条答案
按热度按时间lnvxswe21#
不清楚为什么需要表UDF。
下面是一个标量示例,假定SP未声明为
MODIFIES SQL DATA
:用法:
um6iljoc2#
我刚刚在这里找到了一个答案:
https://bytes.com/topic/db2/answers/185704-combining-stored-procedure-select-statement-possible
mnowg1ta3#
"这是我真实的的处境"
GX70 OSCV/PNUMAPAL是程序MYLIB/数字到字
GX70 OSCV/A_PALABR是函数MYLIB/转换为单词
CREATE OR REPLACE FUNCTION GX70OSCV/A_PALABR (NUMERO CHAR (14)) RETURNS CHAR (256) BEGIN DECLARE PALABRAS CHAR(256); CALL GX70OSCV/PNUMAPAL (NUMERO, PALABRAS); RETURN PALABRAS; END
已在GX70 OSCV中创建PNUMAPAL程序。
则在所述库中,过程存在:
操作对象类型属性文本
PNUMAPAL *PGM RPGLE可编程转换器
CREATE OR REPLACE FUNCTION GX70OSCV/A_PALABR (NUMERO CHAR (14)) RETURNS CHAR (256) BEGIN DECLARE PALABRAS CHAR(256); CALL GX70OSCV/PNUMAPAL (NUMERO, PALABRAS); RETURN PALABRAS; END
个在GX70 OSCV中创建了A_PALABR功能。
则函数也存在:
操作对象类型属性文本
A_PALABR *SRVPGM CLE SQL函数A_PALABR
但不允许使用:
SELECT * FROM (GX70OSCV/A_PALABR('12345')) as T
我不知道我不知道全左交叉内右E
"我想知道它有什么问题"
o75abkj44#
"我开了一个新的帖子,让事情变得更简单“
GX70 OSCV/PNUMAPAL是程序MYLIB/数字到字
GX70 OSCV/A_PALABR是函数MYLIB/转换为单词
CREATE OR REPLACE FUNCTION GX70OSCV/A_PALABR (NUMERO CHAR (14)) RETURNS CHAR (256)
已在GX70 OSCV中创建PNUMAPAL程序。
然后在库GX70 OSCV中,程序存在:
操作对象类型属性文本
PNUMAPAL *PGM RPGLE可编程转换器
CREATE OR REPLACE FUNCTION GX70OSCV/A_PALABR (NUMERO CHAR (14)) RETURNS CHAR (256)
个BEGIN
DECLARE PALABRAS CHAR(256);
CALL GX70OSCV/PNUMAPAL (NUMERO, PALABRAS);
RETURN PALABRAS;
END
在GX70 OSCV中创建了A_PALABR功能。
**则函数也存在:**Opc对象提示属性文本A_PALABR *SRVPGM CLE SQL函数A_PALABR
测试其用法:
SELECT GX70OSCV/A_PALABR('12345') FROM SYSIBM.SYSDUMMY1
{\f4未发现全局}{\f3 GX70 OSCV}{\f4变量列。}
正在检查其定义:
SELECT * FROM QSYS2/SYSROUTINES WHERE FUNCTION_TYPE = 'S' AND IN_PARMS = 1 AND ROUTINE_SCHEMA = 'GX70OSCV' AND ROUTINE_NAME = 'A_PALABR'
特定方案:GX70 OSCV型柴油机
特定名称:A_PALABR
例行程序方案:GX70 OSCV型柴油机
程序名称:A_PALABR
程序类型:功能
创建的程序:2021年8月26日13时57分46秒96万3千
程序定义:"奥瓦卡雷扎"
程序体(_B):查询语句
外部名称:GX70 OSCV/A_面板(A_面板_1)
外部语言(_L):-
参数_样式:-
确定性:否
SQL数据访问:读取
SQL_PATH:“QSYS”、“QSYS 2”、“系统作业指导书”、“SYSIBMADM”、“GX70 OSCV”
e0uiprwp5#
虽然不能直接在
FROM
子句中调用用户定义的表函数,但可以通过其他方法将其转换为SELECT
语句,下面显示了其中的三种方法: