{"id":674,"date":"2008-09-17T23:42:00","date_gmt":"2008-09-17T23:42:00","guid":{"rendered":"\/blogs\/bobb\/post\/SQLCLR-default-procedure-parameters-scripts-correctly-by-SSMS-and-SMO-2008.aspx"},"modified":"2008-09-17T23:42:00","modified_gmt":"2008-09-17T23:42:00","slug":"sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/","title":{"rendered":"SQLCLR default procedure parameters scripts correctly by SSMS and SMO 2008"},"content":{"rendered":"<p>\nAlthough being able to use a GUI tool like SQL Server Management Studio is a nice feature by itself, it&#39;s unusual that fixing something in a GUI makes a feature (that hasn&#39;t changed) more useable. The &quot;feature&quot; is defaults on SQLCLR procedure parameters.\n<\/p>\n<p>\nYou can&#39;t have defaults on parameters in .NET, but you can specify them in the CREATE PROCEDURE DDL, for example:\n<\/p>\n<p>\nCREATE PROCEDURE addwithdefaults (@x int, @z int out, @y int = 5)<br \/>\nAS EXTERNAL NAME sampleasm.StoredProcedures.AddWithDefaults\n<\/p>\n<p>\nThese work just like defaults in T-SQL procedures; if you don&#39;t specify the parameter, the SQLCLR code receives the default value when it is called. Dandy&#8230;it&#39;s always worked this way.\n<\/p>\n<p>\nBut, in SQL Server 2005 SSMS (and SMO) the SQLCLR procedure was always displayed as &quot;No Default&quot;. Even though there&#39;s perfectly good information in the SQL Server metadata about the default. Some folks were convinced that, even though default parameters worked as they should, it was dangerous to use them. Say a DBA was to move the procedure from test to production by scripting the CREATE PROCEDURE statement from SSMS (or SMO). They&#39;d lose the default and when the procedure was defined with the generated script, code that worked in test (depended on the default value) would break in production.\n<\/p>\n<p>\nI just noticed in SQL Server 2008 SSMS that defaults ARE displayed and procedures ARE scripted correctly. Great. Let a thousand SQLCLR procedures with default parameters bloom&#8230;I guess.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Although being able to use a GUI tool like SQL Server Management Studio is a nice feature by itself, it&#39;s unusual that fixing something in a GUI makes a feature (that hasn&#39;t changed) more useable. The &quot;feature&quot; is defaults on SQLCLR procedure parameters. You can&#39;t have defaults on parameters in .NET, but you can specify [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25,29,38],"tags":[],"class_list":["post-674","post","type-post","status-publish","format-standard","hentry","category-smo","category-sql-server-2008","category-sqlclr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SQLCLR default procedure parameters scripts correctly by SSMS and SMO 2008 - Bob Beauchemin<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQLCLR default procedure parameters scripts correctly by SSMS and SMO 2008 - Bob Beauchemin\" \/>\n<meta property=\"og:description\" content=\"Although being able to use a GUI tool like SQL Server Management Studio is a nice feature by itself, it&#039;s unusual that fixing something in a GUI makes a feature (that hasn&#039;t changed) more useable. The &quot;feature&quot; is defaults on SQLCLR procedure parameters. You can&#039;t have defaults on parameters in .NET, but you can specify [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/\" \/>\n<meta property=\"og:site_name\" content=\"Bob Beauchemin\" \/>\n<meta property=\"article:published_time\" content=\"2008-09-17T23:42:00+00:00\" \/>\n<meta name=\"author\" content=\"Bob Beauchemin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bob Beauchemin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/\",\"name\":\"SQLCLR default procedure parameters scripts correctly by SSMS and SMO 2008 - Bob Beauchemin\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website\"},\"datePublished\":\"2008-09-17T23:42:00+00:00\",\"dateModified\":\"2008-09-17T23:42:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SMO\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/category\/smo\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"SQLCLR default procedure parameters scripts correctly by SSMS and SMO 2008\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/\",\"name\":\"Bob Beauchemin\",\"description\":\"SQL Server Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e\",\"name\":\"Bob Beauchemin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g\",\"caption\":\"Bob Beauchemin\"},\"sameAs\":[\"http:\/www.sqlskills.com\/blogs\/bobb\/\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/author\/bobb\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SQLCLR default procedure parameters scripts correctly by SSMS and SMO 2008 - Bob Beauchemin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/","og_locale":"en_US","og_type":"article","og_title":"SQLCLR default procedure parameters scripts correctly by SSMS and SMO 2008 - Bob Beauchemin","og_description":"Although being able to use a GUI tool like SQL Server Management Studio is a nice feature by itself, it&#39;s unusual that fixing something in a GUI makes a feature (that hasn&#39;t changed) more useable. The &quot;feature&quot; is defaults on SQLCLR procedure parameters. You can&#39;t have defaults on parameters in .NET, but you can specify [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/","og_site_name":"Bob Beauchemin","article_published_time":"2008-09-17T23:42:00+00:00","author":"Bob Beauchemin","twitter_misc":{"Written by":"Bob Beauchemin","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/","url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/","name":"SQLCLR default procedure parameters scripts correctly by SSMS and SMO 2008 - Bob Beauchemin","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website"},"datePublished":"2008-09-17T23:42:00+00:00","dateModified":"2008-09-17T23:42:00+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/sqlclr-default-procedure-parameters-scripts-correctly-by-ssms-and-smo-2008\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/bobb\/"},{"@type":"ListItem","position":2,"name":"SMO","item":"https:\/\/www.sqlskills.com\/blogs\/bobb\/category\/smo\/"},{"@type":"ListItem","position":3,"name":"SQLCLR default procedure parameters scripts correctly by SSMS and SMO 2008"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/","name":"Bob Beauchemin","description":"SQL Server Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/bobb\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e","name":"Bob Beauchemin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g","caption":"Bob Beauchemin"},"sameAs":["http:\/www.sqlskills.com\/blogs\/bobb\/"],"url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/author\/bobb\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts\/674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/comments?post=674"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts\/674\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/media?parent=674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/categories?post=674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/tags?post=674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}