Re: SQL UDF to call RPG without service program
Reeve <[email protected]> Mon, 2 Mar 2026 15:43:02 -0800
| Newsgroups | gmane.comp.lang.as400.rpg |
|---|---|
| Message-ID | <CA+CerfdeeubG7iodvN1p_wARoy_7uGX4GQr_Oi4ACGKd8Y3tUQ@mail.gmail.com> |
Rob, "regular" RPG programs (with a mainline, I guess) can't return a value. A function implicitly returns a single value. Service programs (ctl-opt *NOMAIN) can return a value. Two ideas: 1) Read up on parameter passing and overloading. If the attributes of the caller's parameter list don't fit with the called parameter list, you get a Not Found; I think a returned value is not considered in signature matching. 2) Set up a dummy service program named GETUPCHARGEFUNC and see if your code works with it. If so, your SQL is good. --reeve On Mon, Mar 2, 2026 at 12:28 PM Robert Rogerson <[email protected]> wrote: > Hi Reeve, > > I may be missing something but why not just call the RPG from the > function? I'm not sure of the purpose of the procedure and if it's needed. > > Here's an example of a function calling an RPG program. > > CREATE FUNCTION MYLIB.GETUPCHARGEFUNC ( > WHSENBR NUMERIC(3, 0) , > ITEMNBR NUMERIC(6, 0) ) > RETURNS NUMERIC(7, 2) > LANGUAGE RPGLE > SPECIFIC MYLIB.GETUPCHARGEFUNC > NOT DETERMINISTIC > MODIFIES SQL DATA > CALLED ON NULL INPUT > NOT FENCED > EXTERNAL NAME 'MYLIB/GETUPCHRGF' > PARAMETER STYLE SQL ; > > To call > SELECT > ivwhid AS "Warehouse", > ivitm# AS "Item Number", > GETUPCHARGEFUNC(ivwhid, ivitm#) AS "Up Charge" > FROM invmasp > WHERE ivwhid = 90 > AND ivitm# = 5 > ORDER BY 1, 2; > > HTH, > > Rob > > On Mon, Mar 2, 2026 at 2:43 PM Reeve <[email protected]> wrote: > > > External name is FUNC00001A: shouldn't you be calling that object? > > > > On Mon, Mar 2, 2026 at 11:20 AM Eric Wesson <[email protected]> > wrote: > > > > > I am trying to create an SQL function that effectively calls an RPG > > > program and returns the result. I've read you can do it by creating a > > > service program and calling it but I'm trying to do it without the > > service > > > program. > > > > > > I have successfully created an sql stored procedure that calls the RPG > > > program and I've created a function that calls the stored procedure. > > > > > > When i try to use the function, I get an error saying "FUN0001 not > > found". > > > I can successfully call the function directly using "CALL > > > APPSTRPROC.FUNC0001(12345, 0)". > > > I've beat my head against the wall on this one. Any ideas? > > > > > > > > > Code that creates procedure and function > > > // Stored procedure to call rpg > > > Exec sql > > > Create or replace Procedure Appstrproc.FUNC0001( > > > in SystemSku dec(15), > > > out Retail dec(9,2)) > > > Language RPGLE > > > Called on null input > > > Not deterministic > > > No external action > > > Reads sql data > > > External name FUNC00001A > > > Parameter style general; > > > > > > // Function to call stored procedure > > > Exec Sql > > > Create or Replace Function > > > Appstrproc.f_SkuGetCurrentRetail(SystemSku dec(15)) > > > Returns Decimal(9,2) > > > Language SQL > > > Return Appstrproc.FUNC0001(SystemSku, 0); > > > > > > Thanks, > > > Eric > > > -- > > > This is the RPG programming on IBM i (RPG400-L) mailing list > > > To post a message email: [email protected] > > > To subscribe, unsubscribe, or change list options, > > > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > > > or email: [email protected] > > > Before posting, please take a moment to review the archives > > > at https://archive.midrange.com/rpg400-l. > > > > > > Please contact [email protected] for any subscription > related > > > questions. > > > > > > > > -- > > This is the RPG programming on IBM i (RPG400-L) mailing list > > To post a message email: [email protected] > > To subscribe, unsubscribe, or change list options, > > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > > or email: [email protected] > > Before posting, please take a moment to review the archives > > at https://archive.midrange.com/rpg400-l. > > > > Please contact [email protected] for any subscription related > > questions. > > > > > -- > This is the RPG programming on IBM i (RPG400-L) mailing list > To post a message email: [email protected] > To subscribe, unsubscribe, or change list options, > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > or email: [email protected] > Before posting, please take a moment to review the archives > at https://archive.midrange.com/rpg400-l. > > Please contact [email protected] for any subscription related > questions. > > -- This is the RPG programming on IBM i (RPG400-L) mailing list To post a message email: [email protected] To subscribe, unsubscribe, or change list options, visit: https://lists.midrange.com/mailman/listinfo/rpg400-l or email: [email protected] Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l. Please contact [email protected] for any subscription related questions.