Oracle TimesTen 11.2.* supports PL/SQL: the JDBC drivers may be installed from the TimesTen client.
Source code loaded via ttisql retains comments and thus PLDoc comments; the SYS.DBA_SOURCE table is similar to Oracle's view of the same name. In order to retrieve the source code as a single Java object, each line in the tables must be concatenated. Try something like the code below:
CREATE OR REPLACE FUNCTION pls.get_source
/**
*Return TimesTen PLSQL source code as a VARCHAR2 (TimesTen 11.2.1 does not support DBMS_LOB).
*
*<p>This function apes DBMS_METADATA.GET_DDL, so must take 6 parameters; currently only the
*P_OBJECT_TYPE, `P_OBJECT_NAME, `P_OWNER parameters are used.
*</p>
*<p><b><u>Because this function returns a VARCHAR2, this function will return a maximum of 4MB.</u></b></p>
*
*@param p_object_type Object Type
*@param p_object_name Object Name
*@param p_owner Object Owner
*@param p_version Object Version
*@param p_model Object Model
*@param p_transform Required Return format
*@return Object Source as a VARCHAR2(up to 4MB in TimesTen)
*/
(p_object_type VARCHAR2
,p_object_name VARCHAR2
,p_owner VARCHAR2
,p_version IN VARCHAR2 DEFAULT 'COMPATIBLE'
,p_model IN VARCHAR2 DEFAULT 'ORACLE'
,p_transform IN VARCHAR2 DEFAULT 'DDL'
)
RETURN VARCHAR2
AS
/** largest possible VARCHAR2 */
--l_source VARCHAR2(4194304) := '';
l_object_type VARCHAR2(30) ;
l_source VARCHAR2(32767) := '';
l_source_lines_t dbms_preprocessor.source_lines_t;
BEGIN
--As the passed parameters are designed for DBMS_METADATA.GET_DDL,
--this function must convert Object Types such as 'PACKAGE_BODY' back to 'PACKAGE BODY')
l_object_type := CASE p_object_type
WHEN 'PACKAGE_BODY' THEN 'PACKAGE BODY'
WHEN 'PACKAGE_SPEC' THEN 'PACKAGE'
WHEN 'TYPE_BODY' THEN 'TYPE BODY'
WHEN 'TYPE_SPEC' THEN 'TYPE'
ELSE p_object_type
END;
l_source_lines_t := DBMS_PREPROCESSOR.GET_POST_PROCESSED_SOURCE ( l_object_type, p_owner, p_object_name) ;
IF l_source_lines_t.COUNT > 0
THEN
FOR l IN 1 .. l_source_lines_t.COUNT
LOOP
l_source :=
CASE l
WHEN 1 THEN l_source_lines_t(l)
ELSE l_source || l_source_lines_t(l)
END;
END LOOP;
END IF;
RETURN l_source ;
END get_source;
/
SHOW ERRORS
Oracle TimesTen 11.2.1 does not support CLOBs
./pldoc-timesten.sh -doctitle \"Sample TimesTen Application\" -d TimesTen-Example -url -types "'PACKAGE,PACKAGE BODY,PROCEDURE,FUNCTION'" -driver -returntype 12 -getmetadata -user pls -password pls -sql "PLS.%,TTHR.%" -showSkippedPackages
Oracle TimesTen 11.2.2 supports CLOBs
CREATE OR REPLACE FUNCTION pls.get_source_lob
/**
*Return TimesTen PLSQL source code as a CLOB (TimesTen 11.2.2 and after support DBMS_LOB).
*
*<p>This function apes DBMS_METADATA.GET_DDL, so must take 6 parameters; currently only the
*P_OBJECT_TYPE, `P_OBJECT_NAME, `P_OWNER parameters are used.
*</p>
*
*@param p_object_type Object Type
*@param p_object_name Object Name
*@param p_owner Object Owner
*@param p_version Object Version
*@param p_model Object Model
*@param p_transform Required Return format
*@return Object Source as a CLOB
*
*@see http://docs.oracle.com/cd/E11882_01/timesten.112/e21645/d_lob.htm#i999503
*/
(p_object_type VARCHAR2
,p_object_name VARCHAR2
,p_owner VARCHAR2
,p_version IN VARCHAR2 DEFAULT 'COMPATIBLE'
,p_model IN VARCHAR2 DEFAULT 'ORACLE'
,p_transform IN VARCHAR2 DEFAULT 'DDL'
)
RETURN CLOB
AS
l_object_type VARCHAR2(30) ;
l_source CLOB;
l_source_lines_t dbms_preprocessor.source_lines_t;
BEGIN
--As the passed parameters are designed for DBMS_METADATA.GET_DDL,
--this function must convert Object Types such as 'PACKAGE_BODY' back to 'PACKAGE BODY')
l_object_type := CASE p_object_type
WHEN 'PACKAGE_BODY' THEN 'PACKAGE BODY'
WHEN 'PACKAGE_SPEC' THEN 'PACKAGE'
WHEN 'TYPE_BODY' THEN 'TYPE BODY'
WHEN 'TYPE_SPEC' THEN 'TYPE'
ELSE p_object_type
END;
l_source_lines_t := DBMS_PREPROCESSOR.GET_POST_PROCESSED_SOURCE ( l_object_type, p_owner, p_object_name) ;
IF l_source_lines_t.COUNT > 0
THEN
FOR l IN 1 .. l_source_lines_t.COUNT
LOOP
CASE l
WHEN 1 THEN
SYS.DBMS_LOB.CREATETEMPORARY (l_source, TRUE);
SYS.DBMS_LOB.WRITE (l_source, LENGTH(l_source_lines_t(l)), 1, l_source_lines_t(l) );
ELSE
SYS.DBMS_LOB.WRITEAPPEND (l_source, LENGTH(l_source_lines_t(l)), l_source_lines_t(l) );
END CASE;
END LOOP;
END IF;
RETURN l_source ;
END get_source_lob;
/
SHOW ERRORS
./pldoc-timesten.sh -doctitle \"Sample TimesTen Application\" -d TimesTen-Example -url -types "'PACKAGE,PACKAGE BODY,PROCEDURE,FUNCTION'" -driver -returntype 2005 -getmetadata -user pls -password pls -sql "PLS.%,TTHR.%" -showSkippedPackages