{"id":10610,"date":"2020-09-28T12:04:35","date_gmt":"2020-09-28T10:04:35","guid":{"rendered":"https:\/\/www.salvis.com\/blog\/?p=10610"},"modified":"2023-11-12T13:54:44","modified_gmt":"2023-11-12T12:54:44","slug":"disable-formatter-for-code-sections-in-sql-developer","status":"publish","type":"post","link":"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/","title":{"rendered":"Disable Formatter for Code Sections in SQL Developer"},"content":{"rendered":"\n<p>In this blog post, I show how you can disable the formatter for some parts of your code. IntelliJ IDEA and the Eclipse IDE use tags in comments to identify sections of code that must not be formatted. By default, these tags are `@formatter:off` and `@formatter:on`.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Example<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">Example without tags (before)<\/span><span role=\"button\" tabindex=\"0\" data-code=\"SET SERVEROUTPUT ON\n--\n      begin                                 for rec \n   in(select r                          .country_region\n  as region ,p .                       prod_category,sum(\n s.amount_sold ) as                  amount_sold from sales\ns join products p on                p . prod_id = s .prod_id\njoin customers cust on           cust.cust_id=s.cust_id join\ntimes t on t . time_id =s.     time_id join countries r on\n  r.country_id = cust.country_id  where  calendar_year =\n     2000 group by r.country_region , p.prod_category\n       order by r .country_region, p.prod_category\n         ) loop if rec . region = 'Asia' then if\n           rec.prod_category = 'Hardware' then\n             \/* print only one line for demo\n                purposes *\/sys.dbms_output\n                  . put_line ( 'Amount: '\n                    ||rec.amount_sold);\n                      end if;end if;\n                        end loop;\n                          end;\n                           \/\n--\nSELECT FISCAL_YEAR, COUNT(*) FROM SALES S \nNATURAL JOIN TIMES T GROUP BY FISCAL_YEAR ORDER BY 1;\n\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">SET<\/span><span style=\"color: #D4D4D4\"> SERVEROUTPUT <\/span><span style=\"color: #569CD6\">ON<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">--<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #569CD6\">begin<\/span><span style=\"color: #D4D4D4\">                                 <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> rec <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #569CD6\">in<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> r                          .country_region<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> region ,p .                       prod_category,<\/span><span style=\"color: #DCDCAA\">sum<\/span><span style=\"color: #D4D4D4\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> s.amount_sold ) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\">                  amount_sold <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> sales<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">s <\/span><span style=\"color: #569CD6\">join<\/span><span style=\"color: #D4D4D4\"> products p <\/span><span style=\"color: #569CD6\">on<\/span><span style=\"color: #D4D4D4\">                p . prod_id = s .prod_id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">join<\/span><span style=\"color: #D4D4D4\"> customers cust <\/span><span style=\"color: #569CD6\">on<\/span><span style=\"color: #D4D4D4\">           cust.cust_id=s.cust_id <\/span><span style=\"color: #569CD6\">join<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">times t <\/span><span style=\"color: #569CD6\">on<\/span><span style=\"color: #D4D4D4\"> t . time_id =s.     time_id <\/span><span style=\"color: #569CD6\">join<\/span><span style=\"color: #D4D4D4\"> countries r <\/span><span style=\"color: #569CD6\">on<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  r.country_id = cust.country_id  <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\">  calendar_year =<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">     <\/span><span style=\"color: #B5CEA8\">2000<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">group by<\/span><span style=\"color: #D4D4D4\"> r.country_region , p.prod_category<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">order by<\/span><span style=\"color: #D4D4D4\"> r .country_region, p.prod_category<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         ) <\/span><span style=\"color: #C586C0\">loop<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> rec . region = <\/span><span style=\"color: #CE9178\">&#39;Asia&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">then<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">if<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">           rec.prod_category = <\/span><span style=\"color: #CE9178\">&#39;Hardware&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             <\/span><span style=\"color: #6A9955\">\/* print only one line for demo<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">                purposes *\/<\/span><span style=\"color: #D4D4D4\">sys.dbms_output<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                  . put_line ( <\/span><span style=\"color: #CE9178\">&#39;Amount: &#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    ||rec.amount_sold);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                      <\/span><span style=\"color: #C586C0\">end if<\/span><span style=\"color: #D4D4D4\">;<\/span><span style=\"color: #C586C0\">end if<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #C586C0\">end loop<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                          <\/span><span style=\"color: #569CD6\">end<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                           \/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">--<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">SELECT<\/span><span style=\"color: #D4D4D4\"> FISCAL_YEAR, <\/span><span style=\"color: #DCDCAA\">COUNT<\/span><span style=\"color: #D4D4D4\">(*) <\/span><span style=\"color: #569CD6\">FROM<\/span><span style=\"color: #D4D4D4\"> SALES S <\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">NATURAL JOIN<\/span><span style=\"color: #D4D4D4\"> TIMES T <\/span><span style=\"color: #569CD6\">GROUP BY<\/span><span style=\"color: #D4D4D4\"> FISCAL_YEAR <\/span><span style=\"color: #569CD6\">ORDER BY<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>When I format this code with SQL Developer 20.2 and the default <a href=\"https:\/\/github.com\/Trivadis\/plsql-formatter-settings\">Trivadis PL\/SQL &amp; SQL Formatter Settings<\/a> (plus lowercase keywords, lowercase identifiers) the result looks like this:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">Example without tags (after)<\/span><span role=\"button\" tabindex=\"0\" data-code=\"set serveroutput on\n--\nbegin\n   for rec in (\n      select r.country_region as region,\n             p.prod_category,\n             sum(s.amount_sold) as amount_sold\n        from sales s\n        join products p\n          on p.prod_id = s.prod_id\n        join customers cust\n          on cust.cust_id = s.cust_id\n        join times t\n          on t.time_id = s.time_id\n        join countries r\n          on r.country_id = cust.country_id\n       where calendar_year = 2000\n       group by r.country_region,\n                p.prod_category\n       order by r.country_region,\n                p.prod_category\n   ) loop\n      if rec.region = 'Asia' then\n         if rec.prod_category = 'Hardware' then\n             \/* print only one line for demo\n                purposes *\/\n            sys.dbms_output.put_line('Amount: ' || rec.amount_sold);\n         end if;\n      end if;\n   end loop;\nend;\n\/\n--\nselect fiscal_year,\n       count(*)\n  from sales s\nnatural join times t\n group by fiscal_year\n order by 1;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">set<\/span><span style=\"color: #D4D4D4\"> serveroutput <\/span><span style=\"color: #569CD6\">on<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">--<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> rec <\/span><span style=\"color: #569CD6\">in<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> r.country_region <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> region,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             p.prod_category,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             <\/span><span style=\"color: #DCDCAA\">sum<\/span><span style=\"color: #D4D4D4\">(s.amount_sold) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> amount_sold<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> sales s<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">join<\/span><span style=\"color: #D4D4D4\"> products p<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #569CD6\">on<\/span><span style=\"color: #D4D4D4\"> p.prod_id = s.prod_id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">join<\/span><span style=\"color: #D4D4D4\"> customers cust<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #569CD6\">on<\/span><span style=\"color: #D4D4D4\"> cust.cust_id = s.cust_id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">join<\/span><span style=\"color: #D4D4D4\"> times t<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #569CD6\">on<\/span><span style=\"color: #D4D4D4\"> t.time_id = s.time_id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">join<\/span><span style=\"color: #D4D4D4\"> countries r<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #569CD6\">on<\/span><span style=\"color: #D4D4D4\"> r.country_id = cust.country_id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\"> calendar_year = <\/span><span style=\"color: #B5CEA8\">2000<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">group by<\/span><span style=\"color: #D4D4D4\"> r.country_region,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                p.prod_category<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">order by<\/span><span style=\"color: #D4D4D4\"> r.country_region,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                p.prod_category<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   ) <\/span><span style=\"color: #C586C0\">loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> rec.region = <\/span><span style=\"color: #CE9178\">&#39;Asia&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> rec.prod_category = <\/span><span style=\"color: #CE9178\">&#39;Hardware&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             <\/span><span style=\"color: #6A9955\">\/* print only one line for demo<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">                purposes *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            sys.<\/span><span style=\"color: #DCDCAA\">dbms_output.<\/span><span style=\"color: #4EC9B0\">put_line<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;Amount: &#39;<\/span><span style=\"color: #D4D4D4\"> || rec.amount_sold);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         <\/span><span style=\"color: #C586C0\">end if<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #C586C0\">end if<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #C586C0\">end loop<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">end<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">--<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> fiscal_year,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #DCDCAA\">count<\/span><span style=\"color: #D4D4D4\">(*)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> sales s<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">natural join<\/span><span style=\"color: #D4D4D4\"> times t<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">group by<\/span><span style=\"color: #D4D4D4\"> fiscal_year<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">order by<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Argh, I do not want the PL\/SQL block to be formatted. I spent enough time to format it manually and I want to keep it that way. Let&#8217;s add `@formatter:off` and `@formatter:on` tags to the original code like this:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">Example with tags (before)<\/span><span role=\"button\" tabindex=\"0\" data-code=\"SET SERVEROUTPUT ON\n-- @formatter:off\n      begin                                 for rec \n   in(select r                          .country_region\n  as region ,p .                       prod_category,sum(\n s.amount_sold ) as                  amount_sold from sales\ns join products p on                p . prod_id = s .prod_id\njoin customers cust on           cust.cust_id=s.cust_id join\ntimes t on t . time_id =s.     time_id join countries r on\n  r.country_id = cust.country_id  where  calendar_year =\n     2000 group by r.country_region , p.prod_category\n       order by r .country_region, p.prod_category\n         ) loop if rec . region = 'Asia' then if\n           rec.prod_category = 'Hardware' then\n             \/* print only one line for demo\n                purposes *\/sys.dbms_output\n                  . put_line ( 'Amount: '\n                    ||rec.amount_sold);\n                      end if;end if;\n                        end loop;\n                          end;\n                           \/\n-- @formatter:on\nSELECT FISCAL_YEAR, COUNT(*) FROM SALES S \nNATURAL JOIN TIMES T GROUP BY FISCAL_YEAR ORDER BY 1;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">SET<\/span><span style=\"color: #D4D4D4\"> SERVEROUTPUT <\/span><span style=\"color: #569CD6\">ON<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #6A9955\">-- @formatter:off<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #569CD6\">begin<\/span><span style=\"color: #D4D4D4\">                                 <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> rec <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #569CD6\">in<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> r                          .country_region<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> region ,p .                       prod_category,<\/span><span style=\"color: #DCDCAA\">sum<\/span><span style=\"color: #D4D4D4\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> s.amount_sold ) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\">                  amount_sold <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> sales<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">s <\/span><span style=\"color: #569CD6\">join<\/span><span style=\"color: #D4D4D4\"> products p <\/span><span style=\"color: #569CD6\">on<\/span><span style=\"color: #D4D4D4\">                p . prod_id = s .prod_id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">join<\/span><span style=\"color: #D4D4D4\"> customers cust <\/span><span style=\"color: #569CD6\">on<\/span><span style=\"color: #D4D4D4\">           cust.cust_id=s.cust_id <\/span><span style=\"color: #569CD6\">join<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">times t <\/span><span style=\"color: #569CD6\">on<\/span><span style=\"color: #D4D4D4\"> t . time_id =s.     time_id <\/span><span style=\"color: #569CD6\">join<\/span><span style=\"color: #D4D4D4\"> countries r <\/span><span style=\"color: #569CD6\">on<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  r.country_id = cust.country_id  <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\">  calendar_year =<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">     <\/span><span style=\"color: #B5CEA8\">2000<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">group by<\/span><span style=\"color: #D4D4D4\"> r.country_region , p.prod_category<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">order by<\/span><span style=\"color: #D4D4D4\"> r .country_region, p.prod_category<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         ) <\/span><span style=\"color: #C586C0\">loop<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> rec . region = <\/span><span style=\"color: #CE9178\">&#39;Asia&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">then<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">if<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">           rec.prod_category = <\/span><span style=\"color: #CE9178\">&#39;Hardware&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             <\/span><span style=\"color: #6A9955\">\/* print only one line for demo<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">                purposes *\/<\/span><span style=\"color: #D4D4D4\">sys.dbms_output<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                  . put_line ( <\/span><span style=\"color: #CE9178\">&#39;Amount: &#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    ||rec.amount_sold);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                      <\/span><span style=\"color: #C586C0\">end if<\/span><span style=\"color: #D4D4D4\">;<\/span><span style=\"color: #C586C0\">end if<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #C586C0\">end loop<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                          <\/span><span style=\"color: #569CD6\">end<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                           \/<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #6A9955\">-- @formatter:on<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">SELECT<\/span><span style=\"color: #D4D4D4\"> FISCAL_YEAR, <\/span><span style=\"color: #DCDCAA\">COUNT<\/span><span style=\"color: #D4D4D4\">(*) <\/span><span style=\"color: #569CD6\">FROM<\/span><span style=\"color: #D4D4D4\"> SALES S <\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">NATURAL JOIN<\/span><span style=\"color: #D4D4D4\"> TIMES T <\/span><span style=\"color: #569CD6\">GROUP BY<\/span><span style=\"color: #D4D4D4\"> FISCAL_YEAR <\/span><span style=\"color: #569CD6\">ORDER BY<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Now the formatter keeps the PL\/SQL block as it is and formats only the rest.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">Example with tags (after)<\/span><span role=\"button\" tabindex=\"0\" data-code=\"set serveroutput on\n-- @formatter:off\n      begin                                 for rec \n   in(select r                          .country_region\n  as region ,p .                       prod_category,sum(\n s.amount_sold ) as                  amount_sold from sales\ns join products p on                p . prod_id = s .prod_id\njoin customers cust on           cust.cust_id=s.cust_id join\ntimes t on t . time_id =s.     time_id join countries r on\n  r.country_id = cust.country_id  where  calendar_year =\n     2000 group by r.country_region , p.prod_category\n       order by r .country_region, p.prod_category\n         ) loop if rec . region = 'Asia' then if\n           rec.prod_category = 'Hardware' then\n             \/* print only one line for demo\n                purposes *\/sys.dbms_output\n                  . put_line ( 'Amount: '\n                    ||rec.amount_sold);\n                      end if;end if;\n                        end loop;\n                          end;\n                           \/\n-- @formatter:on\nselect fiscal_year,\n       count(*)\n  from sales s\nnatural join times t\n group by fiscal_year\n order by 1;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line cbp-line-highlight\"><span style=\"color: #569CD6\">set<\/span><span style=\"color: #D4D4D4\"> serveroutput <\/span><span style=\"color: #569CD6\">on<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">-- @formatter:off<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #569CD6\">begin<\/span><span style=\"color: #D4D4D4\">                                 <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> rec <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #569CD6\">in<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> r                          .country_region<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> region ,p .                       prod_category,<\/span><span style=\"color: #DCDCAA\">sum<\/span><span style=\"color: #D4D4D4\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> s.amount_sold ) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\">                  amount_sold <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> sales<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">s <\/span><span style=\"color: #569CD6\">join<\/span><span style=\"color: #D4D4D4\"> products p <\/span><span style=\"color: #569CD6\">on<\/span><span style=\"color: #D4D4D4\">                p . prod_id = s .prod_id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">join<\/span><span style=\"color: #D4D4D4\"> customers cust <\/span><span style=\"color: #569CD6\">on<\/span><span style=\"color: #D4D4D4\">           cust.cust_id=s.cust_id <\/span><span style=\"color: #569CD6\">join<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">times t <\/span><span style=\"color: #569CD6\">on<\/span><span style=\"color: #D4D4D4\"> t . time_id =s.     time_id <\/span><span style=\"color: #569CD6\">join<\/span><span style=\"color: #D4D4D4\"> countries r <\/span><span style=\"color: #569CD6\">on<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  r.country_id = cust.country_id  <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\">  calendar_year =<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">     <\/span><span style=\"color: #B5CEA8\">2000<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">group by<\/span><span style=\"color: #D4D4D4\"> r.country_region , p.prod_category<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">order by<\/span><span style=\"color: #D4D4D4\"> r .country_region, p.prod_category<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         ) <\/span><span style=\"color: #C586C0\">loop<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> rec . region = <\/span><span style=\"color: #CE9178\">&#39;Asia&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">then<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">if<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">           rec.prod_category = <\/span><span style=\"color: #CE9178\">&#39;Hardware&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">then<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             <\/span><span style=\"color: #6A9955\">\/* print only one line for demo<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">                purposes *\/<\/span><span style=\"color: #D4D4D4\">sys.dbms_output<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                  . put_line ( <\/span><span style=\"color: #CE9178\">&#39;Amount: &#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    ||rec.amount_sold);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                      <\/span><span style=\"color: #C586C0\">end if<\/span><span style=\"color: #D4D4D4\">;<\/span><span style=\"color: #C586C0\">end if<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                        <\/span><span style=\"color: #C586C0\">end loop<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                          <\/span><span style=\"color: #569CD6\">end<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                           \/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">-- @formatter:on<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> fiscal_year,<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #DCDCAA\">count<\/span><span style=\"color: #D4D4D4\">(*)<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> sales s<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #569CD6\">natural join<\/span><span style=\"color: #D4D4D4\"> times t<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">group by<\/span><span style=\"color: #D4D4D4\"> fiscal_year<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">order by<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>This does not work out of the box. Therefore you have to configure SQL Developer accordingly. Either by importing the latest <a href=\"https:\/\/github.com\/Trivadis\/plsql-formatter-settings\">Trivadis PL\/SQL &amp; SQL Formatter Settings<\/a> (as I&#8217;ve done) or by adding an Arbori query yourself. I explain the latter in the next section.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configure SQL Developer<\/h2>\n\n\n\n<p>To configure this solution you need SQL Developer 19.2 or later. Open the preferences dialog and go to <code>Code Editor<\/code>&nbsp;-&gt; <code>Format<\/code> -&gt; <code>Advanced Format<\/code>&nbsp;-&gt; <code>Custom Format<\/code> .<\/p>\n\n\n\n<p>Add the following Arbori query (e.g. after the <code>dontFormatNode<\/code> query). The position is not that important.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">Arbori query &#8216;dontFormatOffOnRanges&#8217;<\/span><span role=\"button\" tabindex=\"0\" data-code=\"dontFormatOffOnRanges: runOnce -&gt; {\n    var Integer = Java.type('java.lang.Integer');\n    var LexerToken = Java.type('oracle.dbtools.parser.LexerToken'); \n    var Token = Java.type('oracle.dbtools.parser.Token');\n    var tokens = LexerToken.parse(target.input, true);  \/\/ include hidden tokens not relevant to build a parse tree\n    var hiddenTokenCount = 0;\n    var format = true;\n    for (var i in tokens) {\n      if (tokens[i].type == Token.LINE_COMMENT || tokens[i].type == Token.COMMENT) {\n        if (tokens[i].content.toLowerCase().contains(&quot;@formatter:off&quot;) ||\n            tokens[i].content.toLowerCase().contains(&quot;noformat start&quot;)) \n        {\n          format = false;\n        }\n        if (tokens[i].content.toLowerCase().contains(&quot;@formatter:on&quot;) ||\n            tokens[i].content.toLowerCase().contains(&quot;noformat end&quot;))\n        {\n          format = true;\n        }\n        hiddenTokenCount++;\n      } else if (tokens[i].type == Token.WS || tokens[i].type == Token.MACRO_SKIP ||\n                 tokens[i].type == Token.SQLPLUSLINECONTINUE_SKIP) \n      {\n        hiddenTokenCount++\n      } else {  \n        \/* expected types: QUOTED_STRING, DQUOTED_STRING, BQUOTED_STRING, DIGITS, \n                           OPERATION, IDENTIFIER, AUXILIARY, INCOMPLETE *\/\n        if (!format) {\n          struct.unformattedPositions.add(new Integer(i-hiddenTokenCount));\n        }\n      }\n    }\n  }\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C8C8C8\">dontFormatOffOnRanges<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #9CDCFE\">runOnce<\/span><span style=\"color: #D4D4D4\"> -&gt; {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    var <\/span><span style=\"color: #9CDCFE\">Integer<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">Java<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">type<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;java.lang.Integer&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    var <\/span><span style=\"color: #9CDCFE\">LexerToken<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">Java<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">type<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;oracle.dbtools.parser.LexerToken&#39;<\/span><span style=\"color: #D4D4D4\">); <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    var <\/span><span style=\"color: #9CDCFE\">Token<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">Java<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">type<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;oracle.dbtools.parser.Token&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">    var <\/span><span style=\"color: #9CDCFE\">tokens<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">LexerToken<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">parse<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">target<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">input<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\">);  <\/span><span style=\"color: #6A9955\">\/\/ include hidden tokens not relevant to build a parse tree<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    var <\/span><span style=\"color: #9CDCFE\">hiddenTokenCount<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    var <\/span><span style=\"color: #9CDCFE\">format<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">for<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">var<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">tokens<\/span><span style=\"color: #D4D4D4\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">tokens<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">].<\/span><span style=\"color: #9CDCFE\">type<\/span><span style=\"color: #D4D4D4\"> == <\/span><span style=\"color: #9CDCFE\">Token<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #4FC1FF\">LINE_COMMENT<\/span><span style=\"color: #D4D4D4\"> || <\/span><span style=\"color: #9CDCFE\">tokens<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">].<\/span><span style=\"color: #9CDCFE\">type<\/span><span style=\"color: #D4D4D4\"> == <\/span><span style=\"color: #9CDCFE\">Token<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #4FC1FF\">COMMENT<\/span><span style=\"color: #D4D4D4\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">tokens<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">].<\/span><span style=\"color: #9CDCFE\">content<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">toLowerCase<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">contains<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;@formatter:off&quot;<\/span><span style=\"color: #D4D4D4\">) ||<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">tokens<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">].<\/span><span style=\"color: #9CDCFE\">content<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">toLowerCase<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">contains<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;noformat start&quot;<\/span><span style=\"color: #D4D4D4\">)) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">format<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">false<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">tokens<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">].<\/span><span style=\"color: #9CDCFE\">content<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">toLowerCase<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">contains<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;@formatter:on&quot;<\/span><span style=\"color: #D4D4D4\">) ||<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #9CDCFE\">tokens<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">].<\/span><span style=\"color: #9CDCFE\">content<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">toLowerCase<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">contains<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;noformat end&quot;<\/span><span style=\"color: #D4D4D4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">format<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">hiddenTokenCount<\/span><span style=\"color: #D4D4D4\">++;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      } <\/span><span style=\"color: #C586C0\">else<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">tokens<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">].<\/span><span style=\"color: #9CDCFE\">type<\/span><span style=\"color: #D4D4D4\"> == <\/span><span style=\"color: #9CDCFE\">Token<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #4FC1FF\">WS<\/span><span style=\"color: #D4D4D4\"> || <\/span><span style=\"color: #9CDCFE\">tokens<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">].<\/span><span style=\"color: #9CDCFE\">type<\/span><span style=\"color: #D4D4D4\"> == <\/span><span style=\"color: #9CDCFE\">Token<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #4FC1FF\">MACRO_SKIP<\/span><span style=\"color: #D4D4D4\"> ||<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 <\/span><span style=\"color: #9CDCFE\">tokens<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">].<\/span><span style=\"color: #9CDCFE\">type<\/span><span style=\"color: #D4D4D4\"> == <\/span><span style=\"color: #9CDCFE\">Token<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #4FC1FF\">SQLPLUSLINECONTINUE_SKIP<\/span><span style=\"color: #D4D4D4\">) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">hiddenTokenCount<\/span><span style=\"color: #D4D4D4\">++<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      } <\/span><span style=\"color: #C586C0\">else<\/span><span style=\"color: #D4D4D4\"> {  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #6A9955\">\/* expected types: QUOTED_STRING, DQUOTED_STRING, BQUOTED_STRING, DIGITS, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">                           OPERATION, IDENTIFIER, AUXILIARY, INCOMPLETE *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> (!<\/span><span style=\"color: #9CDCFE\">format<\/span><span style=\"color: #D4D4D4\">) {<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">struct<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">unformattedPositions<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">add<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Integer<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">-<\/span><span style=\"color: #9CDCFE\">hiddenTokenCount<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Here are some explanations:<\/p>\n\n\n\n<p>SQL Developer&#8217;s formatter class has a public field named <code>unformattedPositions<\/code> of type\u00a0 <code>Set&lt;Integer><\/code>. It contains all token positions that must not be formatted. We just have to extend this set. However, the parse tree contains only relevant tokens. The whitespace and comments are not relevant. But we need single-line and multi-line comments to disable and enable the formatter. That&#8217;s why we read all tokens on line 5. Now we can determine if a token should be added to the <code>unformattedPositions<\/code> on line 29. The variable <code>i<\/code> contains the current token position. The <code>hiddenTokenCount<\/code> contains the number of preceding tokens that are not part of the parse tree. <code>i-hiddenTokenCount<\/code> equates to the token position in the parse tree. The rest should be self-explanatory.<\/p>\n\n\n\n<p>Read <a href=\"https:\/\/www.salvis.com\/blog\/2020\/04\/13\/formatting-code-with-sql-developer\/\">this post<\/a> to learn more about Arbori and how the formatter works.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blog post, I show how you can disable the formatter for some parts of your code. IntelliJ IDEA and the Eclipse IDE use tags in comments to identify sections of code that must not be formatted. By default, these tags are `@formatter:off` and `@formatter:on`. Example When I format this code<span class=\"excerpt-hellip\"> [\u2026]<\/span><\/p>\n","protected":false},"author":1,"featured_media":10635,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[129,135,13,85,87],"class_list":["post-10610","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-arbori","tag-javascript","tag-plsql","tag-sql","tag-sql-developer"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Disable Formatter for Code Sections in SQL Developer - Philipp Salvisberg&#039;s Blog<\/title>\n<meta name=\"description\" content=\"In this blog post I show how you can disable the formatter for some parts of your code as in IntelliJ IDEA and the Eclipse IDE.\" \/>\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\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Disable Formatter for Code Sections in SQL Developer - Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"In this blog post I show how you can disable the formatter for some parts of your code as in IntelliJ IDEA and the Eclipse IDE.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/\" \/>\n<meta property=\"og:site_name\" content=\"Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-28T10:04:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-12T12:54:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2020\/09\/broken_heart.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"718\" \/>\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=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2020\\\/09\\\/28\\\/disable-formatter-for-code-sections-in-sql-developer\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2020\\\/09\\\/28\\\/disable-formatter-for-code-sections-in-sql-developer\\\/\"},\"author\":{\"name\":\"Philipp Salvisberg\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"headline\":\"Disable Formatter for Code Sections in SQL Developer\",\"datePublished\":\"2020-09-28T10:04:35+00:00\",\"dateModified\":\"2023-11-12T12:54:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2020\\\/09\\\/28\\\/disable-formatter-for-code-sections-in-sql-developer\\\/\"},\"wordCount\":387,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2020\\\/09\\\/28\\\/disable-formatter-for-code-sections-in-sql-developer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/broken_heart.png\",\"keywords\":[\"Arbori\",\"JavaScript\",\"PL\\\/SQL\",\"SQL\",\"SQL Developer\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2020\\\/09\\\/28\\\/disable-formatter-for-code-sections-in-sql-developer\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2020\\\/09\\\/28\\\/disable-formatter-for-code-sections-in-sql-developer\\\/\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2020\\\/09\\\/28\\\/disable-formatter-for-code-sections-in-sql-developer\\\/\",\"name\":\"Disable Formatter for Code Sections in SQL Developer - Philipp Salvisberg&#039;s Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2020\\\/09\\\/28\\\/disable-formatter-for-code-sections-in-sql-developer\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2020\\\/09\\\/28\\\/disable-formatter-for-code-sections-in-sql-developer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/broken_heart.png\",\"datePublished\":\"2020-09-28T10:04:35+00:00\",\"dateModified\":\"2023-11-12T12:54:44+00:00\",\"description\":\"In this blog post I show how you can disable the formatter for some parts of your code as in IntelliJ IDEA and the Eclipse IDE.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2020\\\/09\\\/28\\\/disable-formatter-for-code-sections-in-sql-developer\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2020\\\/09\\\/28\\\/disable-formatter-for-code-sections-in-sql-developer\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2020\\\/09\\\/28\\\/disable-formatter-for-code-sections-in-sql-developer\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/broken_heart.png\",\"contentUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/broken_heart.png\",\"width\":960,\"height\":718},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2020\\\/09\\\/28\\\/disable-formatter-for-code-sections-in-sql-developer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Disable Formatter for Code Sections in SQL Developer\"}]},{\"@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":"Disable Formatter for Code Sections in SQL Developer - Philipp Salvisberg&#039;s Blog","description":"In this blog post I show how you can disable the formatter for some parts of your code as in IntelliJ IDEA and the Eclipse IDE.","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\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/","og_locale":"en_US","og_type":"article","og_title":"Disable Formatter for Code Sections in SQL Developer - Philipp Salvisberg&#039;s Blog","og_description":"In this blog post I show how you can disable the formatter for some parts of your code as in IntelliJ IDEA and the Eclipse IDE.","og_url":"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/","og_site_name":"Philipp Salvisberg&#039;s Blog","article_published_time":"2020-09-28T10:04:35+00:00","article_modified_time":"2023-11-12T12:54:44+00:00","og_image":[{"width":960,"height":718,"url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2020\/09\/broken_heart.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":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/#article","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/"},"author":{"name":"Philipp Salvisberg","@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"headline":"Disable Formatter for Code Sections in SQL Developer","datePublished":"2020-09-28T10:04:35+00:00","dateModified":"2023-11-12T12:54:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/"},"wordCount":387,"commentCount":4,"publisher":{"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2020\/09\/broken_heart.png","keywords":["Arbori","JavaScript","PL\/SQL","SQL","SQL Developer"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/","url":"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/","name":"Disable Formatter for Code Sections in SQL Developer - Philipp Salvisberg&#039;s Blog","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/#primaryimage"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2020\/09\/broken_heart.png","datePublished":"2020-09-28T10:04:35+00:00","dateModified":"2023-11-12T12:54:44+00:00","description":"In this blog post I show how you can disable the formatter for some parts of your code as in IntelliJ IDEA and the Eclipse IDE.","breadcrumb":{"@id":"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/#primaryimage","url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2020\/09\/broken_heart.png","contentUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2020\/09\/broken_heart.png","width":960,"height":718},{"@type":"BreadcrumbList","@id":"https:\/\/www.salvis.com\/blog\/2020\/09\/28\/disable-formatter-for-code-sections-in-sql-developer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.salvis.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Disable Formatter for Code Sections in SQL Developer"}]},{"@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\/10610","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=10610"}],"version-history":[{"count":23,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/10610\/revisions"}],"predecessor-version":[{"id":13984,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/10610\/revisions\/13984"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media\/10635"}],"wp:attachment":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media?parent=10610"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/categories?post=10610"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/tags?post=10610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}