{"id":7184,"date":"2016-06-28T20:47:37","date_gmt":"2016-06-28T18:47:37","guid":{"rendered":"https:\/\/www.salvis.com\/blog\/?p=7184"},"modified":"2023-11-07T23:00:01","modified_gmt":"2023-11-07T22:00:01","slug":"trivadis-plsql-sql-coding-guidelines-version-3-1","status":"publish","type":"post","link":"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/","title":{"rendered":"Trivadis PL\/SQL &#038; SQL Coding Guidelines Version 3.1"},"content":{"rendered":"\n<p>The latest <a href=\"https:\/\/www.salvis.com\/download\/guidelines\/PLSQL_and_SQL_Coding_Guidelines_3_1.pdf\">version 3.1<\/a> of the Trivadis PL\/SQL &amp; SQL Coding Guidelines has 150 pages. More than 90\u00a0additional pages compared to <a href=\"https:\/\/www.salvis.com\/download\/guidelines\/PLSQL_and_SQL_Coding_Guidelines_2_0.pdf\">version 2.0<\/a>. Roger Troller did a tremendous job in updating and extending an already comprehensive document while making it simpler to read and easier to understand. In this post, I will emphasise some changes I consider relevant.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New Guideline Categorisation Scheme<\/h2>\n\n\n\n<p>In <a href=\"https:\/\/www.salvis.com\/download\/guidelines\/PLSQL_and_SQL_Coding_Guidelines_2_0.pdf\">version 2.0<\/a> coding guidelines are categorised by icons for information, caution, performance relevance, maintainability and readability. A guideline is associated exactly with one icon. Here&#8217;s an example:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/guideline_12.png\"><img wpfc-lazyload-disable=\"true\" loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"167\" src=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/guideline_12.png\" alt=\"guideline_12\" class=\"wp-image-7188\" srcset=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/guideline_12.png 1000w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/guideline_12-300x50.png 300w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/guideline_12-768x128.png 768w\" sizes=\"auto, (max-width:767px) 480px, (max-width:1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n\n<p>In <a href=\"https:\/\/www.salvis.com\/download\/guidelines\/PLSQL_and_SQL_Coding_Guidelines_3_1.pdf\">version 3.1<\/a> the characteristics&nbsp;for changeability, efficiency, maintainability, portability, reliability, reusability, security and testability as defined by the&nbsp;<a href=\"http:\/\/www.sqale.org\/\">Software Quality Assessment based on Lifecycle Expectations<\/a>&nbsp;(SQALE) methodology are used to categorise guidelines. A guideline is&nbsp;associated with one or more SQALE characteristics. Additionally a guideline is assigned to a severity (blocker, critical, major, minor, info). So guidelines are categorised in two dimensions: SQALE characteristics&nbsp;and severity. These categorisations are used to filter guidelines in SonarQube or PL\/SQL Cop to be enabled or disabled. It&#8217;s not by chance that SonarQube is using exactly these categorisations.<\/p>\n\n\n\n<p>Here&#8217;s the same example as above using this&nbsp;new guideline categorisation scheme:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/guideline_2150.png\"><img wpfc-lazyload-disable=\"true\" loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"674\" src=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/guideline_2150.png\" alt=\"guideline_2150\" class=\"wp-image-7191\" srcset=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/guideline_2150.png 768w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/guideline_2150-300x263.png 300w\" sizes=\"auto, (max-width:767px) 480px, (max-width:768px) 100vw, 768px\" \/><\/a><\/figure>\n\n\n\n<p>In this excerpt, you see other changes as well. The reference to the CodeXpert rule is gone, guideline 12 got a new identifier\u00a02150 and there is a good and bad example.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Good and Bad Examples for Every Guideline<\/h2>\n\n\n\n<p>In version 2.0 some guidelines had no examples, some just an excerpt of an example, some just a good and some just a bad example. Now in <a href=\"https:\/\/www.salvis.com\/download\/guidelines\/PLSQL_and_SQL_Coding_Guidelines_3_1.pdf\">version 3.1<\/a> almost every\u00a0guideline has a complete bad and a complete good example. By complete I mean that they are executable in SQL*Plus, SQLcl or within your\u00a0IDE of choice. Why &#8220;almost&#8221;? For example, there is this guideline 65\/7210 which says &#8220;Try to keep your packages small. Include only a few procedures and functions that are used in the same context&#8221;. So, in some cases, it is just not feasible\/helpful to include a complete example.<\/p>\n\n\n\n<p>For me as the guy who is responsible for writing rules to check the compliance of\u00a0the guidelines, good and bad examples are essential for unit testing. Such examples also help the developer to understand guidelines. That&#8217;s why we include\u00a0these examples in PL\/SQL Cop.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New Guidelines<\/h2>\n\n\n\n<p>Besides some changes in the categorisation and presentation of the guidelines, there are some new guidelines which I&#8217;d like to mention here:<\/p>\n\n\n\n<table id=\"tablepress-8\" class=\"tablepress tablepress-id-8\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">ID<\/th><th class=\"column-2\">Guideline<\/th><th class=\"column-3\">Severity<\/th><th class=\"column-4\">SQALE Characteristics<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">2230<\/td><td class=\"column-2\">Try to use SIMPLE_INTEGER datatype when appropriate.<\/td><td class=\"column-3\">Minor<\/td><td class=\"column-4\">Efficiency<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">3150<\/td><td class=\"column-2\">Try to use identity columns for surrogate keys.<\/td><td class=\"column-3\">Minor<\/td><td class=\"column-4\">Maintainability, Reliability<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">3160<\/td><td class=\"column-2\">Avoid virtual columns to be visible.<\/td><td class=\"column-3\">Major<\/td><td class=\"column-4\">Maintainability, Reliability<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">3170<\/td><td class=\"column-2\">Always use DEFAULT ON NULL declarations to assign default values to table columns if you refuse to store NULL values.<\/td><td class=\"column-3\">Major<\/td><td class=\"column-4\">Reliability<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">3180<\/td><td class=\"column-2\">Always specify column names instead of positional references in ORDER BY clauses.<\/td><td class=\"column-3\">Major<\/td><td class=\"column-4\">Changeability, Reliability<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">3190<\/td><td class=\"column-2\">Avoid using NATURAL JOIN.<\/td><td class=\"column-3\">Major<\/td><td class=\"column-4\">Changeability, Reliability<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">5010<\/td><td class=\"column-2\">Try to use a error\/logging framework for your application.<\/td><td class=\"column-3\">Critical<\/td><td class=\"column-4\">Reliability, Reusability, Testability<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">7460<\/td><td class=\"column-2\">Try to define your packaged\/standalone function to be deterministic if appropriate.<\/td><td class=\"column-3\">Major<\/td><td class=\"column-4\">Efficiency<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\">7810<\/td><td class=\"column-2\">Do not use SQL inside PL\/SQL to read sequence numbers (or SYSDATE)<\/td><td class=\"column-3\">Major<\/td><td class=\"column-4\">Efficiency, Maintainability<\/td>\n<\/tr>\n<tr class=\"row-11\">\n\t<td class=\"column-1\">8120<\/td><td class=\"column-2\">Never check existence of a row to decide whether to create it or not.<\/td><td class=\"column-3\">Major<\/td><td class=\"column-4\">Efficiency, Reliability<\/td>\n<\/tr>\n<tr class=\"row-12\">\n\t<td class=\"column-1\">8310<\/td><td class=\"column-2\">Always validate input parameter size by assigning the parameter to a size limited variable in the declaration section of program unit.<\/td><td class=\"column-3\">Minor<\/td><td class=\"column-4\">Maintainability, Reliability, Reusability, Testability<\/td>\n<\/tr>\n<tr class=\"row-13\">\n\t<td class=\"column-1\">8410<\/td><td class=\"column-2\">Always use application locks to ensure a program unit only running once at a given time.<\/td><td class=\"column-3\">Minor<\/td><td class=\"column-4\">Efficiency, Reliability<\/td>\n<\/tr>\n<tr class=\"row-14\">\n\t<td class=\"column-1\">8510<\/td><td class=\"column-2\">Always use dbms_application_info to track programm process transiently<\/td><td class=\"column-3\">Minor<\/td><td class=\"column-4\">Efficiency, Reliability<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<h2 class=\"wp-block-heading\">Deprecated Guidelines<\/h2>\n\n\n\n<p>Guideline 54 &#8220;Avoid use of EXCEPTION_INIT pragma for a -20,NNN error&#8221; is not part of the document anymore.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New Guideline Identifiers<\/h2>\n\n\n\n<p>All guidelines got a new identifier. The first digit identifies the chapter of the document, e.g. &#8220;1&#8221; for &#8220;4.1 General&#8221;, &#8220;2&#8221; for &#8220;4.2 Variables &amp; Types&#8221;, &nbsp;etc. The second digit is reserved for the sub-chapters and the remaining digits are just for ordering purposes. The gaps in the numbering scheme should allow to add future guidelines at the right place without renumbering&nbsp;everything (again).<\/p>\n\n\n\n<p>There is an appendix to map old guideline identifiers to new ones. This should simplify the change to <a href=\"https:\/\/www.salvis.com\/download\/guidelines\/PLSQL_and_SQL_Coding_Guidelines_3_1.pdf\">version 3.1<\/a>. Here&#8217;s an excerpt:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/appendix_a-1.png\"><img wpfc-lazyload-disable=\"true\" loading=\"lazy\" decoding=\"async\" width=\"793\" height=\"330\" src=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/appendix_a-1.png\" alt=\"appendix_a\" class=\"wp-image-7214\" srcset=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/appendix_a-1.png 793w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/appendix_a-1-300x125.png 300w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/appendix_a-1-768x320.png 768w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2016\/06\/appendix_a-1-700x290.png 700w\" sizes=\"auto, (max-width:767px) 480px, (max-width:793px) 100vw, 793px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Tool Support<\/h2>\n\n\n\n<p>PL\/SQL Cop is mentioned in the guidelines. However, currently, only the Trivadis PL\/SQL &amp; SQL Guidelines Version 2.0 are supported. But sometime in Q4 of 2016, an update supporting <a href=\"https:\/\/www.salvis.com\/download\/guidelines\/PLSQL_and_SQL_Coding_Guidelines_3_1.pdf\">version 3.1<\/a> should be available.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Download<\/h2>\n\n\n\n<p>Get your copy of the <a href=\"https:\/\/www.salvis.com\/download\/guidelines\/PLSQL_and_SQL_Coding_Guidelines_3_1.pdf\">Trivadis PL\/SQL &amp; SQL Guidelines Version 3.1<\/a> from <a href=\"https:\/\/www.salvis.com\/download\/guidelines\/PLSQL_and_SQL_Coding_Guidelines_3_1.pdf\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The latest version 3.1 of the Trivadis PL\/SQL &amp; SQL Coding Guidelines has 150 pages. More than 90\u00a0additional pages compared to version 2.0. Roger Troller did a tremendous job in updating and extending an already comprehensive document while making it simpler to read and easier to understand. In this post, I will<span class=\"excerpt-hellip\"> [\u2026]<\/span><\/p>\n","protected":false},"author":1,"featured_media":9531,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[13,92,85],"class_list":["post-7184","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-plsql","tag-plsql-cop","tag-sql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Trivadis PL\/SQL &amp; SQL Coding Guidelines Version 3.1 - Philipp Salvisberg&#039;s Blog<\/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.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Trivadis PL\/SQL &amp; SQL Coding Guidelines Version 3.1 - Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"The latest version 3.1 of the Trivadis PL\/SQL &amp; SQL Coding Guidelines has 150 pages. More than 90\u00a0additional pages compared to version 2.0. Roger Troller did a tremendous job in updating and extending an already comprehensive document while making it simpler to read and easier to understand. In this post, I will [\u2026]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-28T18:47:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-07T22:00:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2017\/02\/plsql_sql_guidelines.png\" \/>\n\t<meta property=\"og:image:width\" content=\"753\" \/>\n\t<meta property=\"og:image:height\" content=\"551\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Philipp Salvisberg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@phsalvisberg\" \/>\n<meta name=\"twitter:site\" content=\"@phsalvisberg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Philipp Salvisberg\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2016\\\/06\\\/28\\\/trivadis-plsql-sql-coding-guidelines-version-3-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2016\\\/06\\\/28\\\/trivadis-plsql-sql-coding-guidelines-version-3-1\\\/\"},\"author\":{\"name\":\"Philipp Salvisberg\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"headline\":\"Trivadis PL\\\/SQL &#038; SQL Coding Guidelines Version 3.1\",\"datePublished\":\"2016-06-28T18:47:37+00:00\",\"dateModified\":\"2023-11-07T22:00:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2016\\\/06\\\/28\\\/trivadis-plsql-sql-coding-guidelines-version-3-1\\\/\"},\"wordCount\":583,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2016\\\/06\\\/28\\\/trivadis-plsql-sql-coding-guidelines-version-3-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/plsql_sql_guidelines.png\",\"keywords\":[\"PL\\\/SQL\",\"PL\\\/SQL Cop\",\"SQL\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2016\\\/06\\\/28\\\/trivadis-plsql-sql-coding-guidelines-version-3-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2016\\\/06\\\/28\\\/trivadis-plsql-sql-coding-guidelines-version-3-1\\\/\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2016\\\/06\\\/28\\\/trivadis-plsql-sql-coding-guidelines-version-3-1\\\/\",\"name\":\"Trivadis PL\\\/SQL & SQL Coding Guidelines Version 3.1 - Philipp Salvisberg&#039;s Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2016\\\/06\\\/28\\\/trivadis-plsql-sql-coding-guidelines-version-3-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2016\\\/06\\\/28\\\/trivadis-plsql-sql-coding-guidelines-version-3-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/plsql_sql_guidelines.png\",\"datePublished\":\"2016-06-28T18:47:37+00:00\",\"dateModified\":\"2023-11-07T22:00:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2016\\\/06\\\/28\\\/trivadis-plsql-sql-coding-guidelines-version-3-1\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2016\\\/06\\\/28\\\/trivadis-plsql-sql-coding-guidelines-version-3-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2016\\\/06\\\/28\\\/trivadis-plsql-sql-coding-guidelines-version-3-1\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/plsql_sql_guidelines.png\",\"contentUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/plsql_sql_guidelines.png\",\"width\":753,\"height\":551},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2016\\\/06\\\/28\\\/trivadis-plsql-sql-coding-guidelines-version-3-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Trivadis PL\\\/SQL &#038; SQL Coding Guidelines Version 3.1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/\",\"name\":\"Philipp Salvisberg&#039;s Blog\",\"description\":\"Database-centric development\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\",\"name\":\"Philipp Salvisberg\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\",\"contentUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\",\"width\":400,\"height\":400,\"caption\":\"Philipp Salvisberg\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\"},\"sameAs\":[\"http:\\\/\\\/www.salvis.com\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Trivadis PL\/SQL & SQL Coding Guidelines Version 3.1 - Philipp Salvisberg&#039;s Blog","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.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/","og_locale":"en_US","og_type":"article","og_title":"Trivadis PL\/SQL & SQL Coding Guidelines Version 3.1 - Philipp Salvisberg&#039;s Blog","og_description":"The latest version 3.1 of the Trivadis PL\/SQL &amp; SQL Coding Guidelines has 150 pages. More than 90\u00a0additional pages compared to version 2.0. Roger Troller did a tremendous job in updating and extending an already comprehensive document while making it simpler to read and easier to understand. In this post, I will [\u2026]","og_url":"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/","og_site_name":"Philipp Salvisberg&#039;s Blog","article_published_time":"2016-06-28T18:47:37+00:00","article_modified_time":"2023-11-07T22:00:01+00:00","og_image":[{"width":753,"height":551,"url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2017\/02\/plsql_sql_guidelines.png","type":"image\/png"}],"author":"Philipp Salvisberg","twitter_card":"summary_large_image","twitter_creator":"@phsalvisberg","twitter_site":"@phsalvisberg","twitter_misc":{"Written by":"Philipp Salvisberg","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/#article","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/"},"author":{"name":"Philipp Salvisberg","@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"headline":"Trivadis PL\/SQL &#038; SQL Coding Guidelines Version 3.1","datePublished":"2016-06-28T18:47:37+00:00","dateModified":"2023-11-07T22:00:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/"},"wordCount":583,"commentCount":0,"publisher":{"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2017\/02\/plsql_sql_guidelines.png","keywords":["PL\/SQL","PL\/SQL Cop","SQL"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/","url":"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/","name":"Trivadis PL\/SQL & SQL Coding Guidelines Version 3.1 - Philipp Salvisberg&#039;s Blog","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/#primaryimage"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2017\/02\/plsql_sql_guidelines.png","datePublished":"2016-06-28T18:47:37+00:00","dateModified":"2023-11-07T22:00:01+00:00","breadcrumb":{"@id":"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/#primaryimage","url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2017\/02\/plsql_sql_guidelines.png","contentUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2017\/02\/plsql_sql_guidelines.png","width":753,"height":551},{"@type":"BreadcrumbList","@id":"https:\/\/www.salvis.com\/blog\/2016\/06\/28\/trivadis-plsql-sql-coding-guidelines-version-3-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.salvis.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Trivadis PL\/SQL &#038; SQL Coding Guidelines Version 3.1"}]},{"@type":"WebSite","@id":"https:\/\/www.salvis.com\/blog\/#website","url":"https:\/\/www.salvis.com\/blog\/","name":"Philipp Salvisberg&#039;s Blog","description":"Database-centric development","publisher":{"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.salvis.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515","name":"Philipp Salvisberg","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg","url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg","contentUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg","width":400,"height":400,"caption":"Philipp Salvisberg"},"logo":{"@id":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg"},"sameAs":["http:\/\/www.salvis.com\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/7184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/comments?post=7184"}],"version-history":[{"count":28,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/7184\/revisions"}],"predecessor-version":[{"id":12600,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/7184\/revisions\/12600"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media\/9531"}],"wp:attachment":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media?parent=7184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/categories?post=7184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/tags?post=7184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}