Is it possible use a variable or parameter value for setting an ORDER BY in
a UDTF?
I want to do something like the code below but having a hard time to
achieve this. IS it even doable?
Thanks,
-Arco
CREATE OR REPLACE FUNCTION
Test_Udtf_01
(
peOrderBy01 INTEGER,
peOrderDir01 CHAR(10)
)
RETURNS TABLE (
var INTEGER,
str CHAR(20)
)
LANGUAGE SQL
READS SQL DATA
NO EXTERNAL ACTION
NOT DETERMINISTIC
DISALLOW PARALLEL
RETURN
(
SELECT * FROM LATERAL(VALUES
(1, 'Hello'), (3, 'Is'), (6, 'But'), (7, 'Nothing'),
(2, 'Everything'), (4, 'Just'), (5, 'Fine'), (8, 'Happens'))
AS TestTable(val, str)
ORDER BY peOrderBy01
) ;
SELECT * FROM TABLE
( Test_Udtf_01(
CAST(1 AS INTEGER), -- order by this column
CAST('ASC' AS CHAR(10)) -- order direction
)
) AS t ;
Executing this UDTF runs into errors:
CPF9898 UDF inlining error.
CPF4204 Internal failure occurred in query processor.
SQL0901 SQL system error.
Trying a variety of CASE statements in the ORDER BY clause, then it does
execute without error but does not order:
..repeated code..
ORDER BY CASE WHEN COALESCE(peOrderBy01, 0) <> 0 THEN peOrderBy01 ELSE
peOrderBy01 END
..repeated code..
ORDER BY CASE WHEN COALESCE(peOrderBy01, 1) = 1 THEN 1 ELSE 2 END
..repeated code..
ORDER BY (CAST(peOrderBy01 AS INTEGER))
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact
[javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.