﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>StrataFrame Forum » StrataFrame Database Deployment Toolkit » Database Deployment Toolkit (How do I?)  » Add optional parameter to a store procedure</title><generator>InstantForum 2017-1 Final</generator><description>StrataFrame Forum</description><link>http://forum.strataframe.net/</link><webMaster>StrataFrame Forum</webMaster><lastBuildDate>Wed, 10 Jun 2026 22:40:40 GMT</lastBuildDate><ttl>20</ttl><item><title>Add optional parameter to a store procedure</title><link>http://forum.strataframe.net/FindPost20262.aspx</link><description>Hi,&lt;P&gt;I have the following store procedure in the DDT&lt;/P&gt;&lt;P&gt;[codesnippet][code]&lt;FONT size=2&gt;&lt;/P&gt;&lt;P&gt;@pEmployeePK &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;INT&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/P&gt;&lt;P&gt;@pServiceCallsScheduleDate &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;DATETIME&lt;/P&gt;&lt;P&gt;AS&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;P&gt;SELECT&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;DISTINCT&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; dbo.ServiceCalls.&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;*&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;P&gt;FROM&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; dbo.ServiceCalls&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;RIGHT&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;OUTER&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;JOIN&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; dbo.SC_Appliances&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;ON&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (dbo.ServiceCalls.PK_ServiceCalls &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; dbo.SC_Appliances.FK_ServiceCalls)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;P&gt;WHERE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; (dbo.ServiceCalls.Status &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;NOT&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;IN&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; (2,3))&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;AND&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (dbo.SC_Appliances.IncludeInSCRoute &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 1)&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;AND&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (dbo.SC_Appliances.FK_Employees &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; @pEmployeePK)&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;AND&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (dbo.SC_Appliances.ServicedDate &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; @pServiceCallsScheduleDate);&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;P&gt;SELECT&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;DISTINCT&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; dbo.SC_Appliances.&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;*&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;P&gt;FROM&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; dbo.SC_Appliances&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;RIGHT&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;OUTER&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;JOIN&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; dbo.ServiceCalls&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;ON&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (dbo.SC_Appliances.FK_ServiceCalls &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; dbo.ServiceCalls.PK_ServiceCalls)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;P&gt;WHERE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; (dbo.ServiceCalls.Status &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;NOT&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;IN&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; (2,3))&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;AND&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (dbo.SC_Appliances.IncludeInSCRoute &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 1)&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;AND&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (dbo.SC_Appliances.FK_Employees &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; @pEmployeePK)&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;AND&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; (dbo.SC_Appliances.ServicedDate &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; @pServiceCallsScheduleDate); &lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;[/code][/codesnippet]&lt;/P&gt;&lt;P&gt;The parameter @pEmployeePK should be optional, which mean, that I can either pass a value or pass 0, in VB code I would simple do something like this:&lt;/P&gt;&lt;P&gt;[codesnippet][code]&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/P&gt;&lt;P&gt;If&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; tEmployeePK &amp;gt; 0 &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;Then&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#a31515 size=2&gt;"@pEmployeePK"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;, tEmployeePK).SqlDbType = SqlDbType.BigInt&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;/FONT&gt;[/code][/codesnippet]&lt;/P&gt;&lt;P&gt;How would I code the same condition in T-SQL for the store procedure?</description><pubDate>Thu, 23 Oct 2008 09:00:20 GMT</pubDate><dc:creator>Edhy Rijo</dc:creator></item><item><title>RE: Add optional parameter to a store procedure</title><link>http://forum.strataframe.net/FindPost20281.aspx</link><description>No sweat! Yep, it takes some time to learn the intracacies of SQL and stored procedures, but it is worth it, believe me :D</description><pubDate>Thu, 23 Oct 2008 09:00:20 GMT</pubDate><dc:creator>Dustin Taylor</dc:creator></item><item><title>RE: Add optional parameter to a store procedure</title><link>http://forum.strataframe.net/FindPost20267.aspx</link><description>Hi Dustin,&lt;/P&gt;&lt;P&gt;Thanks a lot, I made the suggested changes and the SP is now working as expected.&amp;nbsp; I am very, very new to SP and now that I have my reports queries working on the VB side, I am moving them to SP to try to speed up the reporting process.</description><pubDate>Wed, 22 Oct 2008 09:30:30 GMT</pubDate><dc:creator>Edhy Rijo</dc:creator></item><item><title>RE: Add optional parameter to a store procedure</title><link>http://forum.strataframe.net/FindPost20264.aspx</link><description>You always have to supply it, but you can account for it as you have already mentioned by passing over a 0 and handling the 0 within the logic of your stored procedure. &lt;P&gt;So you're VB code would look like this (take out the IF test and pass it even if the value is 0):&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;[codesnippet]cmd.Parameters.AddWithValue("@pEmployeePK", tEmployeePK).SqlDbType = SqlDbType.BigInt[/codesnippet]&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;P&gt;You can do something along the lines of the following to account for it in your SQL:&lt;/P&gt;&lt;FONT size=2&gt;&lt;P&gt;[codesnippet]@pEmployeePK INT,&lt;/P&gt;&lt;P&gt;@pServiceCallsScheduleDate DATETIME&lt;/P&gt;&lt;P&gt;AS&lt;/P&gt;&lt;P&gt;BEGIN&lt;/P&gt;&lt;P&gt;SELECT DISTINCT &lt;/P&gt;&lt;P&gt;dbo.ServiceCalls.*&lt;/P&gt;&lt;P&gt;FROM dbo.ServiceCalls AS SC&lt;/P&gt;&lt;P&gt;[b][i]LEFT JOIN dbo.SC_Appliances AS SCA ON SC.PK_ServiceCalls = SCA.FK_ServiceCalls[/b][/i]&lt;/P&gt;&lt;P&gt;WHERE   dbo.ServiceCalls.Status NOT IN (2,3) AND &lt;/P&gt;&lt;P&gt;dbo.SC_Appliances.IncludeInSCRoute = 1 AND &lt;/P&gt;&lt;P&gt;[b][i](@pEmployeePK = 0 OR dbo.SC_Appliances.FK_Employees = @pEmployeePK)[/b][/i] AND &lt;/P&gt;&lt;P&gt;dbo.SC_Appliances.ServicedDate = @pServiceCallsScheduleDate;&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;END[/codesnippet]&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I accounted for the possibility of hte employeePK being 0 through the italicized where condition with the OR in it.  A&lt;/P&gt;&lt;P&gt;couple of things to keep in mind:&lt;/P&gt;&lt;P&gt;1) I used an OR above for clarities sake. ORs tend to slow things down in SQL, though, so if this is a query that&lt;/P&gt;&lt;P&gt;   is used a lot or that needs high performance, I would look at a different solution to handle this problem, even down to &lt;/P&gt;&lt;P&gt;   having two seperate SQL queries on either side of an IF test.&lt;/P&gt;&lt;P&gt;2) I also have italicized your join and changed it to a LEFT JOIN, though that may not be what you need here. I'm not sure what exactly &lt;/P&gt;&lt;P&gt;   your desired results are, but another thing to keep in mind is that OUTER JOINS are slow as all get out in SQL, and RIGHT JOINS aren't &lt;/P&gt;&lt;P&gt;   typically used very much either (they are somewhat slow as well, though there are rare circumstances where they are neaded.) Depending &lt;/P&gt;&lt;P&gt;   on what you are going for here, you can almost always get the records you need with a LEFT or an INNER join. &lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;</description><pubDate>Wed, 22 Oct 2008 09:06:56 GMT</pubDate><dc:creator>Dustin Taylor</dc:creator></item></channel></rss>