SQL Command executes one or more SQL commands for each record in the data flow. You can use SQL Command to:
- Execute complex INSERT/UPDATE statements, such as statements that have subqueries/joins with other tables.
- Update tables after inserting/updating data to maintain referential integrity.
- Update or delete a record in a database before a replacement record is loaded.
- Update multiple tables in a single transaction.
You can execute additional SQL commands before and after executing the main SQL commands, and you can invoke stored procedures.
Call
<Procedure Name>
Stored procedures invoked from SQL Command must not use OUT parameters.
General
The General tab is where you specify dynamic SQL statements that you want to execute once for each record. The following table lists the options available on the General tab.
Option | Description |
---|---|
Connection |
Select the database connection you want to use. Your choices vary depending on what connections are defined in the Connection Manager of Spectrum Management Console. If you need to make a new database connection, or modify or delete an existing database connection, click Manage Connections. If you are adding or modifying a database
connection, complete these fields:
|
SQL statements |
Enter the SQL statements you want to run for each record in the dataflow. As you begin to type, an auto-complete pop-up window will display the valid SQL commands. Separate multiple SQL statements with a semicolon (;). To specify a value from a dataflow field, use this syntax:
Where For example,
In this example Note: Queries must use the fully-qualified name. For example,
MyDatabase.dbo.customer.
|
Transaction processing |
Specifies whether to process records in batches or to process all records at the same time. One of these:
|
Error processing |
Specifies what to do if an error is encountered while executing the SQL commands. One of the following:
Note: If there is a syntax error in the SQL, the data flow will always stop
regardless of which setting you choose here.
In addition, you can optionally write error records to a sink by connecting the SQL Command error port to the type of sink you want. The error port is the white triangle on the right side of the stage icon in the data flow. For example, to write error records to a flat file, you would connect the SQL Command error port to a Write to File stage, as shown here: |
Pre/Post SQL
The Pre/Post SQL tab is where you specify SQL statements that you want to execute once per data flow run, as opposed to once per record as is the case with the SQL you specify on the General tab. The following table lists the options available on the Pre/Post SQL tab.
Option | Description |
---|---|
Pre-SQL |
Type one or more SQL statements that you want to execute before the records coming into the stage are processed. The SQL statements you enter here are executed once per run after the data flow starts running but before the SQL Command stage processes the first records. An example use of pre-SQL would be to create a table for the records that will be processed. |
Autocommit pre-SQL |
Check this box to commit the pre-SQL statements before executing the SQL statements on the General tab. If you do not check this box, the pre-SQL statements will be committed in the same transaction as the SQL statements on the General tab. Note: If you check neither
the Autocommit pre-SQL nor the Autocommit
post-SQL boxes, then all SQL statements for the stage are committed
in one transaction.
|
Post-SQL |
Type one or more SQL statements that you want to execute after all the records are processed. The SQL statements you enter here are executed once per run after the SQL Command stage is finished but before the data flow finishes. An example use of pre-SQL would be to build an index after processing the records. |
Autocommit post-SQL |
Check this box to commit the post-SQL statements in their own transaction after the SQL commands on the General tab are committed. If you do not check this box, the post-SQL statements will be committed in the same transaction as the SQL statements on the General tab. Note: If you check neither
the Autocommit pre-SQL nor the Autocommit
post-SQL boxes, then all SQL statements for the stage are committed
in one transaction.
|
Runtime Tab
The Runtime tab displays Stage Options and gives you the flexibility of defining default values for the stage options.
Field Name |
Description |
---|---|
Stage Options | This section lists the dataflow options
used in the SQL query of this stage and allows you to provide a
default value for all these options. The Name
column lists the options while you can enter the default values in
the corresponding Value column.
Note: The
default value provided here is also displayed in the
Map dataflow options to stages
section of the Dataflow Options dialog
box. The dialogue box also allows you to change the default
value. In case of a clash of default values provided for an
option through Stage Options,
Dataflow Options, and Job
Executor the order of precedence is: Value
provided through Job Executor > Value
defined through the Dataflow Options
dialogue box > Value entered through the Stage
Options.
|