Update Function GENERATE_DBML2
This commit is contained in:
@@ -1 +1,99 @@
|
||||
牄禗袬蒨@\蚕謨@^@
|
||||
SET PATH *LIBL ;
|
||||
|
||||
CREATE OR REPLACE FUNCTION RESTAPI.GENERATE_DBML2 (
|
||||
INAPPVER VARCHAR(10) ,
|
||||
INAPPNAME VARCHAR(128) )
|
||||
RETURNS CLOB(2147483647)
|
||||
LANGUAGE SQL
|
||||
SPECIFIC RESTAPI.GENERATE_DBML2
|
||||
NOT DETERMINISTIC
|
||||
READS SQL DATA
|
||||
CALLED ON NULL INPUT
|
||||
SET OPTION ALWBLK = *ALLREAD ,
|
||||
ALWCPYDTA = *OPTIMIZE ,
|
||||
COMMIT = *NONE ,
|
||||
DBGVIEW = *SOURCE ,
|
||||
DECRESULT = (31, 31, 00) ,
|
||||
DYNDFTCOL = *NO ,
|
||||
DYNUSRPRF = *OWNER ,
|
||||
SRTSEQ = *HEX
|
||||
BEGIN
|
||||
DECLARE V_RESULT CLOB ( 2 G ) ;
|
||||
SELECT XMLSERIALIZE ( CONTENT XMLELEMENT ( NAME "dbml" , XMLATTRIBUTES ( '/'
|
||||
AS "restUriPathTemplate" , '1.0' AS "version" ) , XMLAGG ( XMLELEMENT (
|
||||
NAME "program" , XMLATTRIBUTES ( '' AS "errormessage" , '*NONE' AS
|
||||
"httpheaders" , '500' AS "httpstatusonfailure" , '200' AS
|
||||
"httpstatusonsuccess" , 'get' || UPPER ( LEFT ( Q . APPFUNC , 1 ) ) ||
|
||||
SUBSTR ( Q . APPFUNC , 2 ) || 'Input' AS "inputWrapperIdentifier" ,
|
||||
'get' || UPPER ( LEFT ( Q . APPFUNC , 1 ) ) || SUBSTR ( Q . APPFUNC , 2 ) AS
|
||||
"name" , 'get' || UPPER ( LEFT ( Q . APPFUNC , 1 ) ) || SUBSTR ( Q . APPFUNC , 2)
|
||||
|| 'Result' AS "outputWrapperIdentifier" , 'media-resource' AS
|
||||
"querytype" , '*/*' AS "restConsumes" , 'POST' AS
|
||||
"restHttpRequestMethod" , 'application/json' AS "restProduces" ,
|
||||
'/v1/' || Q . APPNAME || '/' || Q . APPFUNC AS "restUriPathTemplate" ,
|
||||
'*ERRORS' AS "returnsqlstate" , 'true' AS "treatwarningaserror" ,
|
||||
'*TRAILING' AS "trimmode" , 'false' AS "wrapInputParams" , 'true' AS
|
||||
"wrapOutputParam" )
|
||||
, XMLELEMENT ( NAME "sql" , XMLATTRIBUTES (
|
||||
'Values Restapi.Execute_Sql(''' || Q . APPVER || ''', ''' ||
|
||||
Q . APPNAME || ''', ''' || Q . APPFUNC ||
|
||||
''', Cast(Json_Object(' || Q . APPPARMS ||
|
||||
' ) As Varchar(10240) CCSID 37))' AS "statement" )
|
||||
, DATATAGS ) ) ORDER BY Q . APPFUNC ) ) AS CLOB ( 2 G ) )
|
||||
INTO V_RESULT
|
||||
FROM
|
||||
(
|
||||
SELECT S . APPVER , S . APPNAME , S . APPFUNC ,
|
||||
LISTAGG (
|
||||
'''' || P . APPPARAM || ''':' || '?' , ', ' )
|
||||
WITHIN GROUP ( ORDER BY P . PARAMPOS ) AS APPPARMS ,
|
||||
XMLAGG ( XMLELEMENT ( NAME "data" ,
|
||||
XMLATTRIBUTES ( COALESCE ( P . CCSID , 1208 ) AS "ccsid" ,
|
||||
P . APPPARAM AS "name" ,
|
||||
CASE
|
||||
WHEN P . IS_REQUIRED = 1 THEN 'false'
|
||||
ELSE 'true'
|
||||
END AS "nullable" ,
|
||||
CASE
|
||||
WHEN P . TYPENAME IN ( 'CLOB' ) THEN 2147483647
|
||||
WHEN
|
||||
P . TYPENAME IN ( 'VARCHAR' , 'CHAR' )
|
||||
THEN COALESCE ( P . LENGTH , 256 )
|
||||
WHEN
|
||||
P . TYPENAME IN ( 'DECIMAL' , 'NUMERIC' )
|
||||
THEN COALESCE ( P . LENGTH , 31 )
|
||||
WHEN
|
||||
P . TYPENAME IN ( 'INT' ,
|
||||
'INTEGER' , 'BIGINT' , 'SMALLINT' ) THEN 10
|
||||
ELSE 256
|
||||
END AS "precision" ,
|
||||
CASE
|
||||
WHEN P . LOCATION = 'PATH' THEN P . RESTNAME
|
||||
END AS "restInPathParam" ,
|
||||
CASE
|
||||
WHEN P . LOCATION = 'QUERY' THEN P . RESTNAME
|
||||
END AS "restInQueryParam" ,
|
||||
CASE
|
||||
WHEN P . LOCATION = 'FORM' THEN P . RESTNAME
|
||||
END AS "restInFormParam" , P . TYPENAME AS "type" ,
|
||||
'input' AS "usage" ) ) ORDER BY P . PARAMPOS ) AS DATATAGS
|
||||
FROM RESTAPI . SQLSTMTS S
|
||||
JOIN TABLE (
|
||||
RESTAPI . GET_PARAM_PLACEHOLDERS2 ( )
|
||||
) P
|
||||
ON ( S . APPVER , S . APPNAME , S . APPFUNC ) = ( P . APPVER ,
|
||||
P . APPNAME , P . APPFUNC )
|
||||
WHERE ( S . APPVER , S . APPNAME ) = ( INAPPVER , INAPPNAME )
|
||||
GROUP BY S . APPVER , S . APPNAME , S . APPFUNC
|
||||
) AS Q ;
|
||||
RETURN CISTOOLS . STRIP_SPACES ( V_RESULT ) ;
|
||||
END ;
|
||||
|
||||
GRANT ALTER , EXECUTE
|
||||
ON SPECIFIC FUNCTION RESTAPI.GENERATE_DBML2
|
||||
TO AMAPICS WITH GRANT OPTION ;
|
||||
|
||||
GRANT EXECUTE
|
||||
ON SPECIFIC FUNCTION RESTAPI.GENERATE_DBML2
|
||||
TO PUBLIC ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user