This post was originally going to be about using the advanced features of a SSIS OLEDB command to set parameters. I’ve been using Oracle sources lately and the OLEDB command did not recognise the parameters for my query.
For example, my in my work environment, the statement (below) just did not recognise the key_field parameter and so I had to manually add it through the components advanced editor.
Update some_table set some_field = new_value where key_field = ?
We’ll look into the advanced features a little later, however, when I tried to mimic the behaviour (using a MYSQL connection), the only issue I had was creating an OLEDB connection in SSIS. I have ODBC connections on my machine however, (naturally enough given the components name), the OLEDB command requires an OLEDB connection.
So, to create an OLEDB command (and have it reference an ODBC source), simply use the Native OLE DB\MSDataShape provider and use the ODBC name as the server (as in the image below). The UserId, Password and catalogue/schema can all be set through the connection managers interface.
Parameter Management under OLEDB
I can now use that OLEDB connection to execute an OLEDB Command. As discussed above, my original intent was to show how to add a parameter when SSIS did not recognise the parameters. In my situation, this was against an Oracle source. In this demo, I’ll use a simple command
update adventure_works_2012.customer set territory_id = ? where account_number = ?
and the column mappings tab of the OLEDB command allows me to map fields in my source (input data flow) to my command (ie parameters in the destination). We can see this in the mapping screen shot below.
You will notice that the names are generic (Param_0 …. ) and refer the the placement of the ? symbols in the source query. That’s not really user friendly and if i want to give these meaningful names, you would think that I can set them in the Input and Output Properties (using the Name Property as below). However, this is not the way this UI works and the name defaults to the placement of the ? in the query. Long story short, you can’t control the names of the parameters.
However, this part of the (advanced UI) does give us a little indication into how to add parameters. If no parameters are recognised, my can add them through the ‘Add Column’ button on the External Columns node of the Inputs and Outputs tab. This is what i had to do with my Oracle command.