Skip to main content
Executes a SQL script snippet. Property replacement is performed on the script before it is executed.

Delimiting SQL statements

Please note that the statements in the SQL snippet must be delimited properly.
  • Use ; to delimit individual statements.
  • Use / on new line to delimit program blocks.
  • Use /* or — (two dashes) for comments.
The SQL Databases supported by the parser are:
  • Oracle 10g+
    • Using statement delimiter of ;
    • PL/SQL blocks starting with DECLARE or BEGIN and finishing with END; /
  • MySql 5.1+
  • PostgreSql 9.0+ 
  • Derby 10.8.2.2+
  • SAP HANA
  • SQL Server 2008+
  • MariaDB 10.0+
  • Vertica 6.5+
  • H2 1.2.137+
  • solidDB 6.5+
  • SQL Azure
  • DB2 9.7+
  • AWS Redshift
  • Hsql 1.8+
  • Sybase ASE12.5+
  • SQLite 3.7.2+
  • DB2 z/OS 9.1+
  • EnterpriseDB 9.4+
  • Phoenix 4.2.2+
  • Greenplum 4.3+
No JDBC drivers are included in the plugin.

Target Properties

Property Name

Property Code

Required

Description

JDBC URL

FDJDBC_URL

Yes

The JDBC URL of the database.

Connecting to Oracle Autonomous Database

You will need client credential zip file (wallet) to connect with Oracle Autonomous Database on Oracle cloud. You can download wallet zip file from Oracle Cloud, you will need admin userid and password to perform this download. See Download Client Credentials (Wallets) for more details on how to download wallet file.

  • Since FlexDeploy 9.0.0.9 with Oracle Wallet Credential Type : Instead of maintaining the wallet zip file under the file system, you can now store the wallet zip as an Oracle Credential Type in FlexDeploy. This allows for secure storage and use of the wallet.

    • Use the URL syntax in the following format: jdbc:oracle:thin:@service_low?TNS_ADMIN={{FDORACLEWALLETFILE}}</code></p></li><li><p>Wemustselectvalidoraclewalletcredentialfor<code>FDORACLEWALLETFILE</code>propertyontargetgroup.</p></li><li><p>Here,<code>\{\{FDORACLE_WALLET_FILE\}\}</code></p></li><li><p>We must select valid oracle wallet credential for <code>FDORACLE_WALLET_FILE</code> property on target group.</p></li><li><p>Here, <code>{{FDORACLE_WALLET_FILE}} is replaced with the temporary wallet folder path during execution. Once execution is completed, the temporary file is cleaned up automatically.

  • Before FlexDeploy 9.0.0.9

    • You must make sure that only authorized users have access to these wallet files. Unzip the client credentials zip file (wallet_databasename.zip) on FlexDeploy server and/or endpoint where it will be used. For example, /home/flexdeploy/.wallets/<wallet_databasename> is folder where specific wallet file was unzipped. Make sure to secure this folder to FlexDeploy and/or Endpoint user, so that it is not readable by all users.

    • We recommend using Oracle Wallet Credential Type for better security and easier management of Wallet usage.

    • Database URL Syntax : jdbc:oracle:thin:@service_high?TNS_ADMIN=/home/flexdeploy/.wallets/<wallet_databasename>

    • Database URL Long Connection String Format Syntax : jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=<hostname>))(connect_data=(service_name=<serice_name>))(security=(ssl_server_cert_dn=“CN=<hostname>,OU=Oracle BMCS US,O=Oracle Corporation,L=Redwood City,ST=California,C=US”)))

      • Examples for the same can be found here.

If using the Oracle Database Plugin with ADW or ATP databases , use the _low connection. The _medium and _high connections can sometimes throw error ORA-12839: cannot modify an object in parallel after modifying it.

Oracle Wallet File

FDORACLE_WALLET_FILE

No

Since 9.0.0.9 - Provide the Oracle Wallet file, seeCredential Type - Oracle Wallet for more details.

JDBC User

FDJDBC_USER

No

The username that will be used to connect with.

JDBC Password

FDJDBC_PASSWORD

No

The password of the username.

JDBC Driver Path

FDJDBC_DRIVER_PATH

Yes

Classpath for locating the JDBC Driver. For example, 

/u01/oracle/fmw/oracle_common/modules/oracle.jdbc_11.2.0/ojdbc6.jar

Inputs

Input Name

Input Code

Required

Description

User

FDJDBC_INP_USER

No

The username that will be used for database connection. Required if Target JDBC User property is not specified.

This input takes precedence over the Target JDBC User property.

Password

FDJDBC_INP_PASSWORD

No

Password for User specified in plugin input. Required if Target JDBC Password property is not specified.

This input takes precedence over the Target JDBC Password property.

Script Snippet

FDJDBC_INP_SQL_SNIPPET

Yes

The SQL script snippet to be executed.

Run Destructive

FDJDBC_INP_RUN_DESTRUCTIVE

No

This input allows a mechanism for disallowing certain destructive SQL commands.

If the input is set to true, DROP, DELETE, and TRUNCATE will be allowed within the script.

If the input is set to false, plugin operation will abort with a validation error prior to running any of the commands in the script.

This check cannot stop malicious actors, but instead helps to provide some security against accidental running of destructive commands. It is up to the customer to decide whether they want to allow such commands.

Ignore Compilation Warnings

FDJDBC_INP_IGNORE_WARNING

No

If checked, sql compilation warnings will be ignored. Otherwise, they will cause the execution to be marked as failed.

For Oracle database, plugin will print errors from USER_ERRORS or DBA_ERRORS for the object being deployed. Plugin will read errors from USER_ERRORS first and then read from DBA_ERRORS if nothing found. 

Show DBMS Output

FDJDBC_INP_SHOW_DBMS_OUT

No

Print DBMS Output in the log. Only supported for Oracle Database. 

Sql Output Length

FDJDBC_INP_SQL_OP_LINES

No

Specify the no of sql output lines to be printed on the logs .

Artifacts

This operation does not produce or consume any artifacts.

Endpoint Selection

This operation delegates the selection to the workflow developer to determine.

Endpoint Execution

This operation will randomly execute on one of the endpoint identified during selection.

Special Considerations

Replacement Properties

The SQL files are pre-processed by the plugin to transform any defined replacement properties.  An example usage of replacement properties is when the schema name cannot be hard-coded because it varies from environment to environment.

Alternative to Property Replacement

As an alternative to property replacement for dynamic schema injection, consider the use of an ALTER SESSION command to modify the schema user which will run the statements.  With this approach you need to ensure that the statements are not schema qualified. 
For example, you could add one line to the beginning of your sql files
Where MYSCHEMA is a Target property for the MYINST instance.  To achieve this you would create a Target-scoped property on the workflow and associate the workflow to the MYINST instance.  You will then be able to provide values for each environment associated to that instance.

Sample SQL script file