How to refer to parameters by name, not number, in SSIS
Referring to parameters by their numeric position in a list in SSIS is relatively easy, but there is a way to refer to them by name too, as explained in this blog.

Posted by Andy Brown on 30 January 2015

You need a minimum screen resolution of about 700 pixels width to see our blogs. This is because they contain diagrams and tables which would not be viewable easily on a mobile phone or small laptop. Please use a larger tablet, notebook or desktop computer, or change your screen resolution settings.

How to use parameter names in an SSIS package

Another blog triggered by a question from a course: how do you use parameter names in SSIS?

Parameter mapping

The title of the column says Parameter Name, but we've used the index number of the parameter.

Note that the example used on this page comes directly from this blog, but it's easy enough to get the principles without recreating the example.

The answer to the question: if you're using a simple SQL statement, I don't think you can.  However what you can do is to change your statement to use a stored procedure.  The rest of this blog shows how!

Writing the stored procedure

For the package above, the SQL statement we're using is this:

SQL statement to insert

The INSERT INTO statement - or at least, the first bit of it.

And since that wasn't very clear, let's drill down a bit:

The full SQL statement

The full SQL command, relying on the fact that the parameters will be numbered 0 and 1.

 

Here's a stored procedure to do the same thing (if you don't know stored procedures, you're probably reading the wrong blog - try here):

CREATE PROC spInsertFile(

@FileName nvarchar(max),

@LastUpdated datetime

)

AS

-- insert row into file table

INSERT INTO tblFile(

FileName,

LastUpdated

) VALUES (

@FileName,

@LastUpdated

)

Altering the SSIS package to call the procedure

Now we just need to change the SQL command run in SSIS:

Stored procedure call

I realise we're not yet using the parameter names, but softly, softly, catchee monkey ...

You don't need to change the IsQueryStoredProcedure property (which is just as well, as in this window at any rate it's read-only).

For the parameter mapping for the ExecuteSQL task, prefix the parameter names with @ signs (the bit which eluded me for ages):

The parameter names

Prefix the parameter names with @ signs.

This should now all work! 

This blog has 0 threads Add post