templates.definition.Definition.ftl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of autoplsp Show documentation
Show all versions of autoplsp Show documentation
Maven plugin to generate Java classes from StoredProcedure and Functions in Database
<#if objects?size != 0>
# object definitions
<#if driverName == 'oracle' >
<#list objects as parameter>
<#if parameter.object>
```sql
CREATE OR REPLACE TYPE ${parameter.realObjectName} AS OBJECT
(
<#list parameter.parameters as param>
${param.name} ${param.sqlNativeTypeName}<#if param.string>(100 CHAR)<#sep>,
)
```
<#elseif parameter.array>
```sql
CREATE OR REPLACE TYPE ${parameter.realObjectName} AS TABLE OF <#if parameter.parameters[parameter.parameters?size - 1].realObjectName??>${parameter.parameters[parameter.parameters?size - 1].realObjectName}<#else>${parameter.parameters[parameter.parameters?size - 1].sqlNativeTypeName}<#if parameter.parameters[parameter.parameters?size - 1].string>(100 CHAR);
```
<#if procedures?size != 0>
# Procedure definitions
<#list procedures as proc>
```sql
CREATE OR REPLACE <#if proc.function>FUNCTION<#else>PROCEDURE ${proc.name}
<#if proc.hasInput || proc.hasOutput >
(
<#assign nameLength = 0>
<#assign directionLength = 0>
<#list proc.parameters as parameter>
<#if !(parameter.name?length < nameLength)>
<#assign nameLength = parameter.name?length>
<#if !(parameter.sqlNativeDirection?length < directionLength)>
<#assign directionLength = parameter.sqlNativeDirection?length>
<#list proc.parameters as parameter>
${parameter.name}<#list parameter.name?length..nameLength as i> ${parameter.sqlNativeDirection} <#list parameter.sqlNativeDirection?length..directionLength as i> ${parameter.sqlNativeTypeName}<#sep>,
<#if proc.hasInput || proc.hasOutput >
)
AS
BEGIN
<#if proc.checkResult>
${outParameterCode} := ${successCode};
${outParameterMessage} := 'OK';
<#if proc.hasResultSet>
<#list proc.parameters as parameter>
<#if parameter.resultSet>
OPEN ${parameter.name} FOR
SELECT
<#list parameter.parameters as pcursor>
<#if pcursor.string>' <#elseif pcursor.clob>TO_CLOB(' <#elseif pcursor.blob>TO_BLOB(0<#elseif pcursor.date>SYSDATE<#else>0<#if pcursor.string>'<#elseif pcursor.clob>')<#elseif pcursor.blob>) AS ${pcursor.name}<#sep>,
FROM DUAL;
<#if !proc.checkResult && !proc.hasResultSet>
NULL;
EXCEPTION
WHEN OTHERS
THEN
<#if proc.checkResult>
${outParameterCode} := 1${successCode};
${outParameterMessage} := 'NOK';
<#else>
NULL;
END;
```