{"id":13831,"date":"2025-03-08T18:00:56","date_gmt":"2025-03-08T17:00:56","guid":{"rendered":"https:\/\/www.salvis.com\/blog\/?p=13831"},"modified":"2025-03-10T08:40:53","modified_gmt":"2025-03-10T07:40:53","slug":"wrapping-and-unwrapping-pl-sql","status":"publish","type":"post","link":"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/","title":{"rendered":"Wrapping and Unwrapping PL\/SQL"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"introduction\">Introduction<\/h2>\n\n\n\n<p>Today I released a PL\/SQL Unwrapper for VS Code. You can find it in the <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=Grisselbav.plsql-unwrapper\">VS Code Marketplace<\/a>, along with instructions on how to use it. It&#8217;s super easy and works the same way as the extension I wrote 10 years ago for SQL Developer in Java. If you&#8217;re curious about why I created an Unwrapper in the first place, then read this <a href=\"https:\/\/www.salvis.com\/blog\/2015\/05\/17\/introducing-plsql-unwrapper-for-sql-developer\/\">blog post <\/a>. The post also includes the original Python code by Niels Teusink. I basically translated that code to the target language and added a bit of UI sugar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"and-code-wrapped-with-the-9i-wrap-utility\">And Code Wrapped with the 9i Wrap Utility?<\/h2>\n\n\n\n<p>I often get asked whether I plan to enhance the Unwrapper to support code that was wrapped with a wrap utility from Oracle Database version 7, 8, or 9. The answer is no. I don&#8217;t plan on doing that. Why? &#8211; Well, there are a few reasons.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Different Algorithm<\/strong><br \/>The way the wrapping algorithm works in 9i and later versions is totally different. The 9i algorithm is a bit complicated. If you want the full story, check out Pete Finnigan\u2019s&nbsp;<a href=\"https:\/\/www.blackhat.com\/presentations\/bh-usa-06\/BH-US-06-Finnigan.pdf\">How to Unwrap PL\/SQL<\/a>. In other words, It&#8217;ll take a lot of effort to create a comprehensive 9i Unwrapper. If you need one, Pete&#8217;s your guy.<br \/><\/li>\n\n\n\n<li><strong>Not widely used<\/strong><br \/>Since unwrapping &gt;=10g wrapped code is super easy, a few companies decided to use the 9i algorithm with or without a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Minification_(programming)\">minifier<\/a> to protect their intellectual property. However, I do not find that very often in the wild.<br \/><\/li>\n\n\n\n<li><strong>For Legacy Applications Only<\/strong><br \/>IMO the 9i algorithm is only feasible for legacy applications. Because modern PL\/SQL and SQL cannot be processed by the 9i wrap utility. As a result, legit requests for an Unwrapper are applications to be migrated that contain wrapped code without matching source code. In those cases, it is a good idea to contact Pete for help.<\/li>\n<\/ol>\n\n\n\n<p>Let&#8217;s explore this last point a little further.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#wrap-modern-sql-with-oracledb-23ai\">Wrap Modern SQL with OracleDB 23ai<\/a><\/li>\n\n\n\n<li><a href=\"#wrap-modern-sql-with-oracledb-9ir2\">Wrap Modern SQL with OracleDB 9iR2<\/a><\/li>\n\n\n\n<li><a href=\"#wrap-modern-plsql-with-oracledb-9ir2\">Wrap Modern PL\/SQL with OracleDB 9iR2<\/a><\/li>\n\n\n\n<li><a href=\"#conclusion\">Conclusion<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"wrap-modern-sql-with-oracledb-23ai\">Wrap Modern SQL with OracleDB 23ai<\/h2>\n\n\n\n<p>The following procedure uses a table value constructor. That is a 23ai feature.<\/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\">1) print_emp_modern_sql.sql<\/span><span role=\"button\" tabindex=\"0\" data-code=\"create or replace procedure print_emp (in_deptno in number default null) is\nbegin\n   -- print column headers\n   sys.dbms_output.put_line('DEPTNO EMPNO ENAME   SAL');\n   sys.dbms_output.put_line('------ ----- ------ ----');\n   &lt;&lt;print_emps_of_selected_dept&gt;&gt;\n   for r in (\n      with\n         -- table value constructor is a 23ai feature\n         emp (empno, ename, sal, deptno) as (values\n            (7839, 'KING',  5000, 10),\n            (7566, 'JONES', 2975, 20),\n            (7788, 'SCOTT', 3000, 20)\n         )\n      select deptno, empno, ename, sal\n        from emp\n       where deptno = in_deptno or in_deptno is null\n       order by deptno, sal desc\n   ) loop\n      sys.dbms_output.put(lpad(r.deptno, 6));\n      sys.dbms_output.put(lpad(r.empno, 6));\n      sys.dbms_output.put(' ');\n      sys.dbms_output.put(rpad(r.ename, 7));\n      sys.dbms_output.put_line(lpad(r.sal, 4));\n   end loop print_emps_of_selected_dept;\nend print_emp;\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\">create or replace<\/span><span style=\"color: #D4D4D4\"> procedure print_emp (in_deptno <\/span><span style=\"color: #569CD6\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">number<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">default<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">is<\/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: #6A9955\">-- print column headers<\/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;DEPTNO EMPNO ENAME   SAL&#39;<\/span><span style=\"color: #D4D4D4\">);<\/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;------ ----- ------ ----&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   &lt;&lt;print_emps_of_selected_dept&gt;&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> r <\/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\">with<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         <\/span><span style=\"color: #6A9955\">-- table value constructor is a 23ai feature<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">         emp (empno, ename, sal, deptno) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">values<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">            (<\/span><span style=\"color: #B5CEA8\">7839<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;KING&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #B5CEA8\">5000<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">            (<\/span><span style=\"color: #B5CEA8\">7566<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;JONES&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">2975<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">            (<\/span><span style=\"color: #B5CEA8\">7788<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;SCOTT&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">3000<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><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\"> deptno, empno, ename, sal<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> emp<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\"> deptno = in_deptno <\/span><span style=\"color: #569CD6\">or<\/span><span style=\"color: #D4D4D4\"> in_deptno <\/span><span style=\"color: #569CD6\">is null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">order by<\/span><span style=\"color: #D4D4D4\"> deptno, sal <\/span><span style=\"color: #569CD6\">desc<\/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\">      sys.<\/span><span style=\"color: #DCDCAA\">dbms_output.<\/span><span style=\"color: #4EC9B0\">put<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">lpad<\/span><span style=\"color: #D4D4D4\">(r.deptno, <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      sys.<\/span><span style=\"color: #DCDCAA\">dbms_output.<\/span><span style=\"color: #4EC9B0\">put<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">lpad<\/span><span style=\"color: #D4D4D4\">(r.empno, <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      sys.<\/span><span style=\"color: #DCDCAA\">dbms_output.<\/span><span style=\"color: #4EC9B0\">put<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39; &#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      sys.<\/span><span style=\"color: #DCDCAA\">dbms_output.<\/span><span style=\"color: #4EC9B0\">put<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">rpad<\/span><span style=\"color: #D4D4D4\">(r.ename, <\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\">));<\/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: #DCDCAA\">lpad<\/span><span style=\"color: #D4D4D4\">(r.sal, <\/span><span style=\"color: #B5CEA8\">4<\/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\"> print_emps_of_selected_dept;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">end<\/span><span style=\"color: #D4D4D4\"> print_emp;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\/<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>We can wrap this code with the wrap utility of the Oracle Database.<\/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(1 * 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\">2) wrap v23.6 print_modern_sql.sql<\/span><span role=\"button\" tabindex=\"0\" data-code=\"wrap iname=print_emp_modern_sql.sql oname=print_emp_modern_sql_wrapped.sql\" 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: #D4D4D4\">wrap iname=print_emp_modern_sql.sql oname=print_emp_modern_sql_wrapped.sql<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" 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-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"PL\/SQL Wrapper: Release 23.0.0.0.0 - Production on Sat Mar 8 13:20:22 2025\nVersion 23.6.0.24.10\n\nCopyright (c) 1982, 2024, Oracle and\/or its affiliates.  All rights reserved.\n\nProcessing print_emp_modern_sql.sql to print_emp_modern_sql_wrapped.sql\" 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: #D4D4D4\">PL\/SQL Wrapper: Release 23.0.0.0.0 - Production on Sat Mar 8 13:20:22 2025<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Version 23.6.0.24.10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Copyright (c) 1982, 2024, Oracle and\/or its affiliates.  All rights reserved.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Processing print_emp_modern_sql.sql to print_emp_modern_sql_wrapped.sql<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>And the resulting file 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);--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\">3) print_emp_modern_sql_wrapped.sql<\/span><span role=\"button\" tabindex=\"0\" data-code=\"create or replace procedure print_emp wrapped \na000000\n1\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\n7\n357 207\nayazvHL\/mg\/US3DdDyNYwTqa68EwgwLxTK5qyo5A7RlkV79jvdE9vjLZi\/E\/UPQJEalFiuXq\nhzBrk1+1JByeVW8X\/KEOaUHHMK6a36OU2H4q1oax+MG\/\/jNSNhUB6sLU8kRxrH4ebt4Wk40N\nFQYr4wRTWF1+xkM2pmh8W4JiToP15Q0u9rBXe69s78wW2\/zU12UKWGqC85UeCNsFIo\/gM9DI\nUzEh7AwFODhZ4ntqNtVW1RJDBTuExWM1mG\/jBTiKvhCe2Q4FWzymJdUah2Yynj4wzX+ROYX2\nG6PJ\/60EFEz\/K45RH9G\/80R1SaHm7tH0KZZ+vFTKM9gUgoVVZCWt\/7FURXFmyZ4BYuADvKvg\nFydUkofWep7ql66IjSsN2hyHik8Ee6RWQkYDcvIPflMpTBzxidGzteS4RSgg3Q0+di\/WaSdN\ntQdYoiGTodL1hUzbGbxSe\/XSKHY1ISPihH+1TCWz4PmwmbH+iyQ2QfrCu\/Ng+cSB28xJcBBO\nHZoylZ0=\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 cbp-line-highlight\"><span style=\"color: #569CD6\">create or replace<\/span><span style=\"color: #D4D4D4\"> procedure print_emp wrapped <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">a000000<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">7<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">357<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">207<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">ayazvHL\/mg\/US3DdDyNYwTqa68EwgwLxTK5qyo5A7RlkV79jvdE9vjLZi\/E\/UPQJEalFiuXq<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">hzBrk1+1JByeVW8X\/KEOaUHHMK6a36OU2H4q1oax+MG\/\/jNSNhUB6sLU8kRxrH4ebt4Wk40N<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">FQYr4wRTWF1+xkM2pmh8W4JiToP15Q0u9rBXe69s78wW2\/zU12UKWGqC85UeCNsFIo\/gM9DI<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">UzEh7AwFODhZ4ntqNtVW1RJDBTuExWM1mG\/jBTiKvhCe2Q4FWzymJdUah2Yynj4wzX+ROYX2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">G6PJ\/60EFEz\/K45RH9G\/80R1SaHm7tH0KZZ+vFTKM9gUgoVVZCWt\/7FURXFmyZ4BYuADvKvg<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">FydUkofWep7ql66IjSsN2hyHik8Ee6RWQkYDcvIPflMpTBzxidGzteS4RSgg3Q0+di\/WaSdN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">tQdYoiGTodL1hUzbGbxSe\/XSKHY1ISPihH+1TCWz4PmwmbH+iyQ2QfrCu\/Ng+cSB28xJcBBO<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">HZoylZ0=<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">\/<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Let&#8217;s unwrap the code. BTW: the highlighted lines 1 to 18 and 29 to 30 are not required to unwrap the code. <\/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\">4) print_emp_modern_sql_unwrapped.sql<\/span><span role=\"button\" tabindex=\"0\" data-code=\"create or replace PROCEDURE print_emp (IN_DEPTNO IN NUMBER DEFAULT NULL) IS\nBEGIN\n   \n   SYS.DBMS_OUTPUT.PUT_LINE('DEPTNO EMPNO ENAME   SAL');\n   SYS.DBMS_OUTPUT.PUT_LINE('------ ----- ------ ----');\n   &lt;&lt;PRINT_EMPS_OF_SELECTED_DEPT&gt;&gt;\n   FOR R IN (\n      WITH\n         \n         EMP (EMPNO, ENAME, SAL, DEPTNO) AS (VALUES\n            (7839, 'KING',  5000, 10),\n            (7566, 'JONES', 2975, 20),\n            (7788, 'SCOTT', 3000, 20)\n         )\n      SELECT DEPTNO, EMPNO, ENAME, SAL\n        FROM EMP\n       WHERE DEPTNO = IN_DEPTNO OR IN_DEPTNO IS NULL\n       ORDER BY DEPTNO, SAL DESC\n   ) LOOP\n      SYS.DBMS_OUTPUT.PUT(LPAD(R.DEPTNO, 6));\n      SYS.DBMS_OUTPUT.PUT(LPAD(R.EMPNO, 6));\n      SYS.DBMS_OUTPUT.PUT(' ');\n      SYS.DBMS_OUTPUT.PUT(RPAD(R.ENAME, 7));\n      SYS.DBMS_OUTPUT.PUT_LINE(LPAD(R.SAL, 4));\n   END LOOP PRINT_EMPS_OF_SELECTED_DEPT;\nEND PRINT_EMP;\" 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\">create or replace<\/span><span style=\"color: #D4D4D4\"> PROCEDURE print_emp (IN_DEPTNO <\/span><span style=\"color: #569CD6\">IN<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">NUMBER<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">DEFAULT<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">NULL<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">IS<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">BEGIN<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">   <\/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;DEPTNO EMPNO ENAME   SAL&#39;<\/span><span style=\"color: #D4D4D4\">);<\/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;------ ----- ------ ----&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   &lt;&lt;PRINT_EMPS_OF_SELECTED_DEPT&gt;&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #C586C0\">FOR<\/span><span style=\"color: #D4D4D4\"> R <\/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\">WITH<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">         <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         EMP (EMPNO, ENAME, SAL, DEPTNO) <\/span><span style=\"color: #569CD6\">AS<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">VALUES<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            (<\/span><span style=\"color: #B5CEA8\">7839<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;KING&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #B5CEA8\">5000<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            (<\/span><span style=\"color: #B5CEA8\">7566<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;JONES&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">2975<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            (<\/span><span style=\"color: #B5CEA8\">7788<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;SCOTT&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">3000<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">20<\/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: #569CD6\">SELECT<\/span><span style=\"color: #D4D4D4\"> DEPTNO, EMPNO, ENAME, SAL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">FROM<\/span><span style=\"color: #D4D4D4\"> EMP<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">WHERE<\/span><span style=\"color: #D4D4D4\"> DEPTNO = IN_DEPTNO <\/span><span style=\"color: #569CD6\">OR<\/span><span style=\"color: #D4D4D4\"> IN_DEPTNO <\/span><span style=\"color: #569CD6\">IS NULL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">ORDER BY<\/span><span style=\"color: #D4D4D4\"> DEPTNO, SAL <\/span><span style=\"color: #569CD6\">DESC<\/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\">      SYS.<\/span><span style=\"color: #DCDCAA\">DBMS_OUTPUT.<\/span><span style=\"color: #4EC9B0\">PUT<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">LPAD<\/span><span style=\"color: #D4D4D4\">(R.DEPTNO, <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      SYS.<\/span><span style=\"color: #DCDCAA\">DBMS_OUTPUT.<\/span><span style=\"color: #4EC9B0\">PUT<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">LPAD<\/span><span style=\"color: #D4D4D4\">(R.EMPNO, <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      SYS.<\/span><span style=\"color: #DCDCAA\">DBMS_OUTPUT.<\/span><span style=\"color: #4EC9B0\">PUT<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39; &#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      SYS.<\/span><span style=\"color: #DCDCAA\">DBMS_OUTPUT.<\/span><span style=\"color: #4EC9B0\">PUT<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">RPAD<\/span><span style=\"color: #D4D4D4\">(R.ENAME, <\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\">));<\/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: #DCDCAA\">LPAD<\/span><span style=\"color: #D4D4D4\">(R.SAL, <\/span><span style=\"color: #B5CEA8\">4<\/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\"> PRINT_EMPS_OF_SELECTED_DEPT;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">END<\/span><span style=\"color: #D4D4D4\"> PRINT_EMP;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Interesting are the empty lines 3 and 9. The original comments are lost. Furthermore, all keywords and identifiers are in uppercase. The only exception is the name of the procedure. The Unwrapper added the <code>create or replace<\/code> clause to make the statement executable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"wrap-modern-sql-with-oracledb-9ir2\">Wrap Modern SQL with OracleDB 9iR2<\/h2>\n\n\n\n<p>Now let&#8217;s try to wrap <code>print_emp_modern_sql.sql<\/code> with the wrap utility in the Oracle Database 9.2.0.8.<\/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(1 * 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\">5) wrap v9.2 print_modern_sql.sql<\/span><span role=\"button\" tabindex=\"0\" data-code=\"wrap iname=print_emp_modern_sql.sql oname=print_emp_modern_sql_wrapped9i.sql\" 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: #D4D4D4\">wrap iname=print_emp_modern_sql.sql oname=print_emp_modern_sql_wrapped9i.sql<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" 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-width:calc(1 * 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 role=\"button\" tabindex=\"0\" data-code=\"PL\/SQL Wrapper: Release 9.2.0.8.0- 64bit Production on Sat Mar 08 14:55:28 2025\n\nCopyright (c) Oracle Corporation 1993, 2001.  All Rights Reserved.\n\nProcessing print_emp_modern_sql.sql to print_emp_modern_sql_wrapped9i.sql\nPSU(103,1,8,7):Encountered the symbol &quot;WITH&quot; when expecting one of the following:\n\n   ( - + case mod new not null others select &lt;an identifier&gt;\n   &lt;a double-quoted delimited-identifier&gt; &lt;a bind variable&gt; avg\n   count current exists max min prior sql stddev sum variance\n   execute forall merge time timestamp interval date\n   &lt;a string literal with character set specification&gt;\n   &lt;a number&gt; &lt;a single-quoted SQL string&gt; pipe\nThe symbol &quot;WITH&quot; was ignored.\n\nPSU(103,1,10,42):Encountered the symbol &quot;AS&quot; when expecting one of the following:\n\n   . ( ) , * % &amp; | = - + &lt; \/ &gt; at in is mod not range rem =&gt; ..\n   &lt;an exponent (**)&gt; &lt;&gt; or != or ~= &gt;= &lt;= &lt;&gt; and or like\n   between ||\n\nPL\/SQL Wrapper error: Compilation error(s) for:\ncreate or replace procedure print_emp\nOutputting source and continuing.\" 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: #D4D4D4\">PL\/SQL Wrapper: Release 9.2.0.8.0- 64bit Production on Sat Mar 08 14:55:28 2025<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Copyright (c) Oracle Corporation 1993, 2001.  All Rights Reserved.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Processing print_emp_modern_sql.sql to print_emp_modern_sql_wrapped9i.sql<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">PSU(103,1,8,7):Encountered the symbol &quot;WITH&quot; when expecting one of the following:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   ( - + case mod new not null others select &lt;an identifier&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   &lt;a double-quoted delimited-identifier&gt; &lt;a bind variable&gt; avg<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   count current exists max min prior sql stddev sum variance<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   execute forall merge time timestamp interval date<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   &lt;a string literal with character set specification&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   &lt;a number&gt; &lt;a single-quoted SQL string&gt; pipe<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">The symbol &quot;WITH&quot; was ignored.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">PSU(103,1,10,42):Encountered the symbol &quot;AS&quot; when expecting one of the following:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   . ( ) , * % &amp; | = - + &lt; \/ &gt; at in is mod not range rem =&gt; ..<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   &lt;an exponent (**)&gt; &lt;&gt; or != or ~= &gt;= &lt;= &lt;&gt; and or like<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   between ||<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">PL\/SQL Wrapper error: Compilation error(s) for:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">create or replace procedure print_emp<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Outputting source and continuing.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>We got two errors due to the use of modern SQL. However, we can use the parameter <code>edebug=wrap_new_sql<\/code> to support newer SQL grammar.<\/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(1 * 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\">6) wrap v9.2 print_modern_sql.sql with edebug=wrap_new_sql<\/span><span role=\"button\" tabindex=\"0\" data-code=\"wrap iname=print_emp_modern_sql.sql oname=print_emp_modern_sql_wrapped9i.sql edebug=wrap_new_sql\" 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: #D4D4D4\">wrap iname=print_emp_modern_sql.sql oname=print_emp_modern_sql_wrapped9i.sql edebug=wrap_new_sql<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" 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-width:calc(1 * 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 role=\"button\" tabindex=\"0\" data-code=\"PL\/SQL Wrapper: Release 9.2.0.8.0- 64bit Production on Sat Mar 08 14:56:01 2025\n\nCopyright (c) Oracle Corporation 1993, 2001.  All Rights Reserved.\n\nProcessing print_emp_modern_sql.sql to print_emp_modern_sql_wrapped9i.sql\" 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: #D4D4D4\">PL\/SQL Wrapper: Release 9.2.0.8.0- 64bit Production on Sat Mar 08 14:56:01 2025<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Copyright (c) Oracle Corporation 1993, 2001.  All Rights Reserved.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Processing print_emp_modern_sql.sql to print_emp_modern_sql_wrapped9i.sql<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>And the resulting file 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(3 * 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\">7) print_emp_modern_sql_wrapped9i.sql<\/span><span role=\"button\" tabindex=\"0\" data-code=\"create or replace procedure print_emp wrapped \n0\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\nabcd\n3\n7\n9200000\n1\n4\n0 \n18\n2 :e:\n1PRINT_EMP:\n1IN_DEPTNO:\n1NUMBER:\n1SYS:\n1DBMS_OUTPUT:\n1PUT_LINE:\n1DEPTNO EMPNO ENAME   SAL:\n1------ ----- ------ ----:\n1PRINT_EMPS_OF_SELECTED_DEPT:\n1R:\n1EMP:\n1EMPNO:\n1ENAME:\n1SAL:\n1DEPTNO:\n1LOOP:\n1with:n         -- table value constructor is a 23ai feature:n         emp (em+\n1pno, ename, sal, deptno) as (values:n            (7839, 'KING',  5000, 10),:n+\n1            (7566, 'JONES', 2975, 20),:n            (7788, 'SCOTT', 3000, 20)+\n1:n         ):n      select deptno, empno, ename, sal:n        from emp:n     +\n1  where deptno = in_deptno or in_deptno is null:n       order by deptno, sal +\n1desc:n   :\n1PUT:\n1LPAD:\n16:\n1 :\n1RPAD:\n17:\n14:\n0\n\n0\n0\n7e\n2\n0 9a 8f a0 4d b0 3d b4\n55 6a :2 a0 6b a0 6b 6e a5\n57 :2 a0 6b a0 6b 6e a5 57\n93 91 :10 a0 12a 37 :2 a0 6b a0\n6b :3 a0 6b 51 a5 b a5 57\n:2 a0 6b a0 6b :3 a0 6b 51 a5\nb a5 57 :2 a0 6b a0 6b 6e\na5 57 :2 a0 6b a0 6b :3 a0 6b\n51 a5 b a5 57 :2 a0 6b a0\n6b :3 a0 6b 51 a5 b a5 57\nb7 :2 a0 47 b0 46 b7 a4 a0\nb1 11 68 4f 1d 17 b5 \n7e\n2\n0 3 20 1b 1f 1a 28 17\n2d 31 35 39 3d 40 44 47\n4c 4d 52 56 5a 5d 61 64\n69 6a 6f 77 7b 7f 83 87\n8b 8f 93 97 9b 9f a3 a7\nab af b3 b7 bb c7 c9 cd\nd1 d4 d8 db df e3 e7 ea\ned ee f0 f1 f6 fa fe 101\n105 108 10c 110 114 117 11a 11b\n11d 11e 123 127 12b 12e 132 135\n13a 13b 140 144 148 14b 14f 152\n156 15a 15e 161 164 165 167 168\n16d 171 175 178 17c 17f 183 187\n18b 18e 191 192 194 195 19a 19c\n1a0 1a4 1ab 1ac 1af 1b1 1b5 1b9\n1bb 1c7 1cb 1cd 1ce 1d7 \n7e\n2\n0 b 16 23 32 :2 16 15 :2 1\n4 :2 8 :2 14 1d :3 4 :2 8 :2 14 1d\n:2 4 6 8 a f 16 1d 22\ne 16 1d 24 :2 e 17 24 11\n19 6 d 4 7 :2 b :2 17 1b\n20 :2 22 2a :2 1b :3 7 :2 b :2 17 1b\n20 :2 22 29 :2 1b :3 7 :2 b :2 17 1b\n:3 7 :2 b :2 17 1b 20 :2 22 29 :2 1b\n:3 7 :2 b :2 17 20 25 :2 27 2c :2 20\n:2 7 6 8 d 4 :4 1 5 :7 1\n\n7e\n4\n0 :9 1 :8 4 :8 5\n6 7 :5 a :4 f\n10 :3 11 :2 12 13\n:2 7 :e 14 :e 15 :8 16\n:e 17 :e 18 13 :2 19\n7 :4 2 1a :7 1\n\n1d9\n4\n:3 0 1 :a 0 79\n1 :7 0 5 :2 0\n:2 3 :4 0 2 :7 0\n5 3 4 :2 0\n7 :2 0 79 1\n8 :2 0 4 :3 0\n5 :3 0 a b\n0 6 :3 0 c\nd 0 7 :4 0\n7 e 10 :2 0\n74 4 :3 0 5\n:3 0 12 13 0\n6 :3 0 14 15\n0 8 :4 0 9\n16 18 :2 0 74\n9 :5 0 72 2\na :3 0 b :3 0\nc :3 0 d :3 0\ne :3 0 f :3 0\nf :3 0 c :3 0\nd :3 0 e :3 0\nb :3 0 f :3 0\n2 :3 0 2 :3 0\nf :3 0 e :3 0\n10 :4 0 11 1\n:8 0 2d 1b 2c\n4 :3 0 5 :3 0\n2e 2f 0 12\n:3 0 30 31 0\n13 :3 0 a :3 0\nf :3 0 34 35\n0 14 :2 0 b\n33 38 e 32\n3a :2 0 6e 4\n:3 0 5 :3 0 3c\n3d 0 12 :3 0\n3e 3f 0 13\n:3 0 a :3 0 c\n:3 0 42 43 0\n14 :2 0 10 41\n46 13 40 48\n:2 0 6e 4 :3 0\n5 :3 0 4a 4b\n0 12 :3 0 4c\n4d 0 15 :4 0\n15 4e 50 :2 0\n6e 4 :3 0 5\n:3 0 52 53 0\n12 :3 0 54 55\n0 16 :3 0 a\n:3 0 d :3 0 58\n59 0 17 :2 0\n17 57 5c 1a\n56 5e :2 0 6e\n4 :3 0 5 :3 0\n60 61 0 6\n:3 0 62 63 0\n13 :3 0 a :3 0\ne :3 0 66 67\n0 18 :2 0 1c\n65 6a 1f 64\n6c :2 0 6e 21\n71 10 :3 0 9\n:3 0 2d 6e :4 0\n73 27 72 71\n74 29 78 :3 0\n78 1 :4 0 78\n77 74 75 :6 0\n79 :2 0 1 8\n78 7c :3 0 7b\n79 7d :8 0 \n2d\n4\n:3 0 1 2 1\n6 1 f 1\n17 2 36 37\n1 39 2 44\n45 1 47 1\n4f 2 5a 5b\n1 5d 2 68\n69 1 6b 5\n3b 49 51 5f\n6d 1 1a 3\n11 19 73 \n1\n4\n0 \n7c\n0\n1\n14\n2\n4\n0 1 0 0 0 0 0 0\n0 0 0 0 0 0 0 0\n0 0 0 0 \n2 1 0\n1a 1 2\n1 0 1\n1b 2 0\n0\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: #569CD6\">create or replace<\/span><span style=\"color: #D4D4D4\"> procedure print_emp wrapped <\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">abcd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">7<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">9200000<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">18<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> :e:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1PRINT_EMP:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1IN_DEPTNO:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1NUMBER:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1SYS:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1DBMS_OUTPUT:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1PUT_LINE:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1DEPTNO EMPNO ENAME   SAL:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #6A9955\">------ ----- ------ ----:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1PRINT_EMPS_OF_SELECTED_DEPT:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1R:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1EMP:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1EMPNO:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1ENAME:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1SAL:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1DEPTNO:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1LOOP:<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">1with:n         <\/span><span style=\"color: #6A9955\">-- table value constructor is a 23ai feature:n         emp (em+<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">1pno, ename, sal, deptno) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">values<\/span><span style=\"color: #D4D4D4\">:n            (<\/span><span style=\"color: #B5CEA8\">7839<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;KING&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #B5CEA8\">5000<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">),:n+<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">            (<\/span><span style=\"color: #B5CEA8\">7566<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;JONES&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">2975<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\">),:n            (<\/span><span style=\"color: #B5CEA8\">7788<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;SCOTT&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">3000<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\">)+<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">:n         ):n      <\/span><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> deptno, empno, ename, sal:n        <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> emp:n     +<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\"> deptno = in_deptno <\/span><span style=\"color: #569CD6\">or<\/span><span style=\"color: #D4D4D4\"> in_deptno <\/span><span style=\"color: #569CD6\">is null<\/span><span style=\"color: #D4D4D4\">:n       <\/span><span style=\"color: #569CD6\">order by<\/span><span style=\"color: #D4D4D4\"> deptno, sal +<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">1desc:n   :<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1PUT:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1LPAD:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">16<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> :<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1RPAD:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">17<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">14<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">7e<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> 9a 8f a0 4d b0 3d b4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">55<\/span><span style=\"color: #D4D4D4\"> 6a :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> a0 6b a0 6b 6e a5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">57<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> a0 6b a0 6b 6e a5 <\/span><span style=\"color: #B5CEA8\">57<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">93<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">91<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\"> a0 12a <\/span><span style=\"color: #B5CEA8\">37<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> a0 6b a0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">6b :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> a0 6b <\/span><span style=\"color: #B5CEA8\">51<\/span><span style=\"color: #D4D4D4\"> a5 b a5 <\/span><span style=\"color: #B5CEA8\">57<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> a0 6b a0 6b :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> a0 6b <\/span><span style=\"color: #B5CEA8\">51<\/span><span style=\"color: #D4D4D4\"> a5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">b a5 <\/span><span style=\"color: #B5CEA8\">57<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> a0 6b a0 6b 6e<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">a5 <\/span><span style=\"color: #B5CEA8\">57<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> a0 6b a0 6b :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> a0 6b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">51<\/span><span style=\"color: #D4D4D4\"> a5 b a5 <\/span><span style=\"color: #B5CEA8\">57<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> a0 6b a0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">6b :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> a0 6b <\/span><span style=\"color: #B5CEA8\">51<\/span><span style=\"color: #D4D4D4\"> a5 b a5 <\/span><span style=\"color: #B5CEA8\">57<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">b7 :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> a0 <\/span><span style=\"color: #B5CEA8\">47<\/span><span style=\"color: #D4D4D4\"> b0 <\/span><span style=\"color: #B5CEA8\">46<\/span><span style=\"color: #D4D4D4\"> b7 a4 a0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">b1 <\/span><span style=\"color: #B5CEA8\">11<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">68<\/span><span style=\"color: #D4D4D4\"> 4f 1d <\/span><span style=\"color: #B5CEA8\">17<\/span><span style=\"color: #D4D4D4\"> b5 <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">7e<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\"> 1b 1f 1a <\/span><span style=\"color: #B5CEA8\">28<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">17<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">2d <\/span><span style=\"color: #B5CEA8\">31<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">35<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">39<\/span><span style=\"color: #D4D4D4\"> 3d <\/span><span style=\"color: #B5CEA8\">40<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">44<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">47<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">4c 4d <\/span><span style=\"color: #B5CEA8\">52<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">56<\/span><span style=\"color: #D4D4D4\"> 5a 5d <\/span><span style=\"color: #B5CEA8\">61<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">64<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">69<\/span><span style=\"color: #D4D4D4\"> 6a 6f <\/span><span style=\"color: #B5CEA8\">77<\/span><span style=\"color: #D4D4D4\"> 7b 7f <\/span><span style=\"color: #B5CEA8\">83<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">87<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">8b 8f <\/span><span style=\"color: #B5CEA8\">93<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">97<\/span><span style=\"color: #D4D4D4\"> 9b 9f a3 a7<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">ab af b3 b7 bb c7 c9 cd<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">d1 d4 d8 db df e3 e7 ea<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">ed ee f0 f1 f6 fa fe <\/span><span style=\"color: #B5CEA8\">101<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">105<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">108<\/span><span style=\"color: #D4D4D4\"> 10c <\/span><span style=\"color: #B5CEA8\">110<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">114<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">117<\/span><span style=\"color: #D4D4D4\"> 11a 11b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">11d 11e <\/span><span style=\"color: #B5CEA8\">123<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">127<\/span><span style=\"color: #D4D4D4\"> 12b 12e <\/span><span style=\"color: #B5CEA8\">132<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">135<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">13a 13b <\/span><span style=\"color: #B5CEA8\">140<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">144<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">148<\/span><span style=\"color: #D4D4D4\"> 14b 14f <\/span><span style=\"color: #B5CEA8\">152<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">156<\/span><span style=\"color: #D4D4D4\"> 15a 15e <\/span><span style=\"color: #B5CEA8\">161<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">164<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">165<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">167<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">168<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">16d <\/span><span style=\"color: #B5CEA8\">171<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">175<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">178<\/span><span style=\"color: #D4D4D4\"> 17c 17f <\/span><span style=\"color: #B5CEA8\">183<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">187<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">18b 18e <\/span><span style=\"color: #B5CEA8\">191<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">192<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">194<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">195<\/span><span style=\"color: #D4D4D4\"> 19a 19c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1a0 1a4 1ab 1ac 1af 1b1 1b5 1b9<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1bb 1c7 1cb 1cd 1ce 1d7 <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">7e<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> b <\/span><span style=\"color: #B5CEA8\">16<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">23<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">32<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">16<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">15<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">8<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">14<\/span><span style=\"color: #D4D4D4\"> 1d :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">8<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">14<\/span><span style=\"color: #D4D4D4\"> 1d<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">8<\/span><span style=\"color: #D4D4D4\"> a f <\/span><span style=\"color: #B5CEA8\">16<\/span><span style=\"color: #D4D4D4\"> 1d <\/span><span style=\"color: #B5CEA8\">22<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">e <\/span><span style=\"color: #B5CEA8\">16<\/span><span style=\"color: #D4D4D4\"> 1d <\/span><span style=\"color: #B5CEA8\">24<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> e <\/span><span style=\"color: #B5CEA8\">17<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">24<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">11<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">19<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\"> d <\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> b :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">17<\/span><span style=\"color: #D4D4D4\"> 1b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">22<\/span><span style=\"color: #D4D4D4\"> 2a :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> 1b :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> b :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">17<\/span><span style=\"color: #D4D4D4\"> 1b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">22<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">29<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> 1b :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> b :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">17<\/span><span style=\"color: #D4D4D4\"> 1b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> b :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">17<\/span><span style=\"color: #D4D4D4\"> 1b <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">22<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">29<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> 1b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> b :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">17<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">25<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">27<\/span><span style=\"color: #D4D4D4\"> 2c :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">20<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">8<\/span><span style=\"color: #D4D4D4\"> d <\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">7e<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">9<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">8<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">8<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\"> a :<\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> f<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">11<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">12<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">13<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> :e <\/span><span style=\"color: #B5CEA8\">14<\/span><span style=\"color: #D4D4D4\"> :e <\/span><span style=\"color: #B5CEA8\">15<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">8<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">16<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:e <\/span><span style=\"color: #B5CEA8\">17<\/span><span style=\"color: #D4D4D4\"> :e <\/span><span style=\"color: #B5CEA8\">18<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">13<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">19<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> 1a :<\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1d9<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> :a <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">79<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">79<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">8<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> a b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">d <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\"> e <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">74<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">12<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">13<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">14<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">15<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">8<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">9<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">16<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">18<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">74<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">9<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">72<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">a :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> b :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">c<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> d :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">e :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> f :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">f :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">c<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">d :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> e :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">b :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> f :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">f :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> e :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">11<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">8<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> 2d 1b 2c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">2e 2f <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">12<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">30<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">31<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">13<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> a :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">f :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">34<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">35<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">14<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">33<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">38<\/span><span style=\"color: #D4D4D4\"> e <\/span><span style=\"color: #B5CEA8\">32<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">3a :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> 6e <\/span><span style=\"color: #B5CEA8\">4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> 3c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">3d <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">12<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">3e 3f <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">13<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> a :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">42<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">43<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">14<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">41<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">46<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">13<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">40<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">48<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> 6e <\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> 4a 4b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">12<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> 4c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">4d <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">15<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">15<\/span><span style=\"color: #D4D4D4\"> 4e <\/span><span style=\"color: #B5CEA8\">50<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">6e <\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">52<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">53<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">12<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">54<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">55<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">16<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> d :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">58<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">59<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">17<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">17<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">57<\/span><span style=\"color: #D4D4D4\"> 5c 1a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">56<\/span><span style=\"color: #D4D4D4\"> 5e :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> 6e<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">60<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">61<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">6<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">62<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">63<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">13<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> a :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">e :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">66<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">67<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">18<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> 1c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">65<\/span><span style=\"color: #D4D4D4\"> 6a 1f <\/span><span style=\"color: #B5CEA8\">64<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">6c :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> 6e <\/span><span style=\"color: #B5CEA8\">21<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">71<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">9<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> 2d 6e :<\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">73<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">27<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">72<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">71<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">74<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">29<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">78<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">78<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">78<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">77<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">74<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">75<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">79<\/span><span style=\"color: #D4D4D4\"> :<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">8<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">78<\/span><span style=\"color: #D4D4D4\"> 7c :<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> 7b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">79<\/span><span style=\"color: #D4D4D4\"> 7d :<\/span><span style=\"color: #B5CEA8\">8<\/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\">2d<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">:<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> f <\/span><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">17<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">36<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">37<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">39<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">44<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">45<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">47<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">4f <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> 5a 5b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> 5d <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">68<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">69<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> 6b <\/span><span style=\"color: #B5CEA8\">5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">3b <\/span><span style=\"color: #B5CEA8\">49<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">51<\/span><span style=\"color: #D4D4D4\"> 5f<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">6d <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> 1a <\/span><span style=\"color: #B5CEA8\">3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">11<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">19<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">73<\/span><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">7c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">14<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/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: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1a <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">1b <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B5CEA8\">0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\/<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>The query is visible in plain text on lines 42 to 47.<\/p>\n\n\n\n<p>When we try to install this wrapped package in the OracleDB 23ai we get the following error:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" 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-width:calc(1 * 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\">8) Error message with default settings<\/span><span role=\"button\" tabindex=\"0\" data-code=\"Procedure PRINT_EMP compiled\n\nLINE\/COL  ERROR\n--------- -------------------------------------------------------------\n0\/0       PLS-01918: 9.2 and earlier wrap formats are not permitted\nErrors: check compiler log\" 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: #D4D4D4\">Procedure PRINT_EMP compiled<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">LINE\/COL  ERROR<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">--------- -------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">0\/0       PLS-01918: 9.2 and earlier wrap formats are not permitted<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Errors: check compiler log<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>We have to enable <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/23\/refrn\/PERMIT_92_WRAP_FORMAT.html\">permit_92_wrap_format<\/a> to overcome this issue. This is not possible on session or PDB level. So we have to change the settings as follows:<\/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(1 * 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\">9) enable permit_92_wrap_format<\/span><span role=\"button\" tabindex=\"0\" data-code=\"alter session set container=cdb$root;\nalter system set permit_92_wrap_format=true scope=spfile;\" 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\">alter<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">session<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">set<\/span><span style=\"color: #D4D4D4\"> container=cdb$<\/span><span style=\"color: #569CD6\">root<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">alter<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">system<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">set<\/span><span style=\"color: #D4D4D4\"> permit_92_wrap_format=true scope=spfile;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" 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-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"Session altered.\n\n\nSystem altered.\" 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: #D4D4D4\">Session altered.<\/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\">System altered.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>After a restart of the database, we can install <code>print_emp_modern_sql_wrapped9i.sql<\/code> successfully.<\/p>\n\n\n\n<p>System parameters that you can&#8217;t set at the PDB level are very limiting. In fact, it makes installing PL\/SQL code wrapped with the 9i wrap utility in an Autonomous Database pretty much impossible.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"wrap-modern-plsql-with-oracledb-9ir2\">Wrap Modern PL\/SQL with OracleDB 9iR2<\/h2>\n\n\n\n<p>We have seen that it is possible to process arbitrary SQL within PL\/SQL with the wrap utility in OracleDB 9.2. <\/p>\n\n\n\n<p>Now let&#8217;s add some PL\/SQL constructs that were introduced in later versions of the Oracle Database.<\/p>\n\n\n\n<p>The highlighted lines show the changes to <code>print_emp_modern_sql<\/code>. We use a PL\/SQL identifier <code>print_employees_of_a_selected_department<\/code> that is longer than 30 bytes. Also, we use the <code>continue<\/code> statement, which wasn&#8217;t available in version 9.2.0.8.<\/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\">10) print_emp_modern_plsql.sql<\/span><span role=\"button\" tabindex=\"0\" data-code=\"create or replace procedure print_emp (in_deptno in number default null) is\nbegin\n   -- print column headers\n   sys.dbms_output.put_line('DEPTNO EMPNO ENAME   SAL');\n   sys.dbms_output.put_line('------ ----- ------ ----');\n   &lt;&lt;print_employees_of_a_selected_department&gt;&gt;\n   for r in (\n      with\n         -- table value constructor is a 23ai feature\n         emp (empno, ename, sal, deptno) as (values\n            (7839, 'KING',  5000, 10),\n            (7566, 'JONES', 2975, 20),\n            (7788, 'SCOTT', 3000, 20)\n         )\n      select deptno, empno, ename, sal\n        from emp\n       where deptno = in_deptno or in_deptno is null\n       order by deptno, sal desc\n   ) loop\n      -- continue is a 11g feature\n      continue when r.sal &lt; 1000;\n      sys.dbms_output.put(lpad(r.deptno, 6));\n      sys.dbms_output.put(lpad(r.empno, 6));\n      sys.dbms_output.put(' ');\n      sys.dbms_output.put(rpad(r.ename, 7));\n      sys.dbms_output.put_line(lpad(r.sal, 4));\n   end loop print_employees_of_a_selected_department;\nend print_emp;\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\">create or replace<\/span><span style=\"color: #D4D4D4\"> procedure print_emp (in_deptno <\/span><span style=\"color: #569CD6\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">number<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">default<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">is<\/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: #6A9955\">-- print column headers<\/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;DEPTNO EMPNO ENAME   SAL&#39;<\/span><span style=\"color: #D4D4D4\">);<\/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;------ ----- ------ ----&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">   &lt;&lt;print_employees_of_a_selected_department&gt;&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> r <\/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\">with<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         <\/span><span style=\"color: #6A9955\">-- table value constructor is a 23ai feature<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         emp (empno, ename, sal, deptno) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">values<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            (<\/span><span style=\"color: #B5CEA8\">7839<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;KING&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #B5CEA8\">5000<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            (<\/span><span style=\"color: #B5CEA8\">7566<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;JONES&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">2975<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            (<\/span><span style=\"color: #B5CEA8\">7788<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;SCOTT&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">3000<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">20<\/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: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> deptno, empno, ename, sal<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> emp<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\"> deptno = in_deptno <\/span><span style=\"color: #569CD6\">or<\/span><span style=\"color: #D4D4D4\"> in_deptno <\/span><span style=\"color: #569CD6\">is null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">order by<\/span><span style=\"color: #D4D4D4\"> deptno, sal <\/span><span style=\"color: #569CD6\">desc<\/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: #6A9955\">-- continue is a 11g feature<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #C586C0\">continue<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">when<\/span><span style=\"color: #D4D4D4\"> r.sal &lt; <\/span><span style=\"color: #B5CEA8\">1000<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      sys.<\/span><span style=\"color: #DCDCAA\">dbms_output.<\/span><span style=\"color: #4EC9B0\">put<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">lpad<\/span><span style=\"color: #D4D4D4\">(r.deptno, <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      sys.<\/span><span style=\"color: #DCDCAA\">dbms_output.<\/span><span style=\"color: #4EC9B0\">put<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">lpad<\/span><span style=\"color: #D4D4D4\">(r.empno, <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      sys.<\/span><span style=\"color: #DCDCAA\">dbms_output.<\/span><span style=\"color: #4EC9B0\">put<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39; &#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      sys.<\/span><span style=\"color: #DCDCAA\">dbms_output.<\/span><span style=\"color: #4EC9B0\">put<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">rpad<\/span><span style=\"color: #D4D4D4\">(r.ename, <\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\">));<\/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: #DCDCAA\">lpad<\/span><span style=\"color: #D4D4D4\">(r.sal, <\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #C586C0\">end loop<\/span><span style=\"color: #D4D4D4\"> print_employees_of_a_selected_department;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">end<\/span><span style=\"color: #D4D4D4\"> print_emp;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\/<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Let&#8217;s try to wrap this code with the wrap utility of the Oracle Database 9.2.0.8.<\/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(1 * 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\">11) wrap v9.2 print_modern_plsql.sql with edebug=wrap_new_sql<\/span><span role=\"button\" tabindex=\"0\" data-code=\" wrap iname=print_emp_modern_plsql.sql oname=print_emp_modern_plsql_wrapped9i.sql edebug=wrap_new_sql\" 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: #D4D4D4\"> wrap iname=print_emp_modern_plsql.sql oname=print_emp_modern_plsql_wrapped9i.sql edebug=wrap_new_sql<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" 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-width:calc(1 * 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 role=\"button\" tabindex=\"0\" data-code=\"PL\/SQL Wrapper: Release 9.2.0.8.0- 64bit Production on Sat Mar 08 16:11:45 2025\n\nCopyright (c) Oracle Corporation 1993, 2001.  All Rights Reserved.\n\nProcessing print_emp_modern_plsql.sql to print_emp_modern_plsql_wrapped9i.sql\nPSU(114,1,6,6):identifier 'PRINT_EMPLOYEES_OF_A_SELECTED_' too long\nPSU(103,1,21,16):Encountered the symbol &quot;WHEN&quot; when expecting one of the following:\n\n   := . ( @ % ;\n\nPSU(114,1,27,13):identifier 'PRINT_EMPLOYEES_OF_A_SELECTED_' too long\nPL\/SQL Wrapper error: Compilation error(s) for:\ncreate or replace procedure print_emp\nOutputting source and continuing.\" 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: #D4D4D4\">PL\/SQL Wrapper: Release 9.2.0.8.0- 64bit Production on Sat Mar 08 16:11:45 2025<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Copyright (c) Oracle Corporation 1993, 2001.  All Rights Reserved.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Processing print_emp_modern_plsql.sql to print_emp_modern_plsql_wrapped9i.sql<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">PSU(114,1,6,6):identifier &#39;PRINT_EMPLOYEES_OF_A_SELECTED_&#39; too long<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">PSU(103,1,21,16):Encountered the symbol &quot;WHEN&quot; when expecting one of the following:<\/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 cbp-line-highlight\"><span style=\"color: #D4D4D4\">PSU(114,1,27,13):identifier &#39;PRINT_EMPLOYEES_OF_A_SELECTED_&#39; too long<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">PL\/SQL Wrapper error: Compilation error(s) for:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">create or replace procedure print_emp<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Outputting source and continuing.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>It is impossible to wrap PL\/SQL code with grammar constructs that are missing in the Oracle database version of the wrap utility. This is only true for Oracle Database versions before 10g, though.<\/p>\n\n\n\n<p>In case of an error, the wrap utility writes the original code unchanged to the target file. So technically, the resulting file can be installed successfully.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusion<\/h2>\n\n\n\n<p>Still wrapping PL\/SQL with Oracle 9i Release 2? It\u2019s time to move on. Staying tied to 2007\u2019s feature set means restricting your application\u2019s potential and compatibility.<\/p>\n\n\n\n<p>And if you\u2019re absolutely sure you need a 9i Unwrapper, I\u2019m not the person to ask &#8211; <a href=\"http:\/\/www.petefinnigan.com\/services\/unwrapping_plsql.htm\">Pete<\/a> is.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Today I released a PL\/SQL Unwrapper for VS Code. You can find it in the VS Code Marketplace, along with instructions on how to use it. It&#8217;s super easy and works the same way as the extension I wrote 10 years ago for SQL Developer in Java. If you&#8217;re curious about<span class=\"excerpt-hellip\"> [\u2026]<\/span><\/p>\n","protected":false},"author":1,"featured_media":13845,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[13,121,85],"class_list":["post-13831","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-plsql","tag-pl-sql-unwrapper","tag-sql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Wrapping and Unwrapping PL\/SQL - Philipp Salvisberg&#039;s Blog<\/title>\n<meta name=\"description\" content=\"PL\/SQL Unwrapper for VS Code is available. It supports wrap utility of Oracle Database 10g or newer. Older versions are a dead end.\" \/>\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\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wrapping and Unwrapping PL\/SQL - Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"PL\/SQL Unwrapper for VS Code is available. It supports wrap utility of Oracle Database 10g or newer. Older versions are a dead end.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/\" \/>\n<meta property=\"og:site_name\" content=\"Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-08T17:00:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-10T07:40:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2025\/03\/plsql-unwrapper4.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1284\" \/>\n\t<meta property=\"og:image:height\" content=\"964\" \/>\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=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/03\\\/08\\\/wrapping-and-unwrapping-pl-sql\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/03\\\/08\\\/wrapping-and-unwrapping-pl-sql\\\/\"},\"author\":{\"name\":\"Philipp Salvisberg\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"headline\":\"Wrapping and Unwrapping PL\\\/SQL\",\"datePublished\":\"2025-03-08T17:00:56+00:00\",\"dateModified\":\"2025-03-10T07:40:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/03\\\/08\\\/wrapping-and-unwrapping-pl-sql\\\/\"},\"wordCount\":867,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/03\\\/08\\\/wrapping-and-unwrapping-pl-sql\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/plsql-unwrapper4.png\",\"keywords\":[\"PL\\\/SQL\",\"PL\\\/SQL Unwrapper\",\"SQL\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/03\\\/08\\\/wrapping-and-unwrapping-pl-sql\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/03\\\/08\\\/wrapping-and-unwrapping-pl-sql\\\/\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/03\\\/08\\\/wrapping-and-unwrapping-pl-sql\\\/\",\"name\":\"Wrapping and Unwrapping PL\\\/SQL - Philipp Salvisberg&#039;s Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/03\\\/08\\\/wrapping-and-unwrapping-pl-sql\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/03\\\/08\\\/wrapping-and-unwrapping-pl-sql\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/plsql-unwrapper4.png\",\"datePublished\":\"2025-03-08T17:00:56+00:00\",\"dateModified\":\"2025-03-10T07:40:53+00:00\",\"description\":\"PL\\\/SQL Unwrapper for VS Code is available. It supports wrap utility of Oracle Database 10g or newer. Older versions are a dead end.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/03\\\/08\\\/wrapping-and-unwrapping-pl-sql\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/03\\\/08\\\/wrapping-and-unwrapping-pl-sql\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/03\\\/08\\\/wrapping-and-unwrapping-pl-sql\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/plsql-unwrapper4.png\",\"contentUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/plsql-unwrapper4.png\",\"width\":1284,\"height\":964,\"caption\":\"PL\\\/SQL Unwrapper for VS Code\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/03\\\/08\\\/wrapping-and-unwrapping-pl-sql\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wrapping and Unwrapping PL\\\/SQL\"}]},{\"@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":"Wrapping and Unwrapping PL\/SQL - Philipp Salvisberg&#039;s Blog","description":"PL\/SQL Unwrapper for VS Code is available. It supports wrap utility of Oracle Database 10g or newer. Older versions are a dead end.","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\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/","og_locale":"en_US","og_type":"article","og_title":"Wrapping and Unwrapping PL\/SQL - Philipp Salvisberg&#039;s Blog","og_description":"PL\/SQL Unwrapper for VS Code is available. It supports wrap utility of Oracle Database 10g or newer. Older versions are a dead end.","og_url":"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/","og_site_name":"Philipp Salvisberg&#039;s Blog","article_published_time":"2025-03-08T17:00:56+00:00","article_modified_time":"2025-03-10T07:40:53+00:00","og_image":[{"width":1284,"height":964,"url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2025\/03\/plsql-unwrapper4.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":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/#article","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/"},"author":{"name":"Philipp Salvisberg","@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"headline":"Wrapping and Unwrapping PL\/SQL","datePublished":"2025-03-08T17:00:56+00:00","dateModified":"2025-03-10T07:40:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/"},"wordCount":867,"commentCount":2,"publisher":{"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2025\/03\/plsql-unwrapper4.png","keywords":["PL\/SQL","PL\/SQL Unwrapper","SQL"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/","url":"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/","name":"Wrapping and Unwrapping PL\/SQL - Philipp Salvisberg&#039;s Blog","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/#primaryimage"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2025\/03\/plsql-unwrapper4.png","datePublished":"2025-03-08T17:00:56+00:00","dateModified":"2025-03-10T07:40:53+00:00","description":"PL\/SQL Unwrapper for VS Code is available. It supports wrap utility of Oracle Database 10g or newer. Older versions are a dead end.","breadcrumb":{"@id":"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/#primaryimage","url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2025\/03\/plsql-unwrapper4.png","contentUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2025\/03\/plsql-unwrapper4.png","width":1284,"height":964,"caption":"PL\/SQL Unwrapper for VS Code"},{"@type":"BreadcrumbList","@id":"https:\/\/www.salvis.com\/blog\/2025\/03\/08\/wrapping-and-unwrapping-pl-sql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.salvis.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Wrapping and Unwrapping PL\/SQL"}]},{"@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\/13831","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=13831"}],"version-history":[{"count":11,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/13831\/revisions"}],"predecessor-version":[{"id":13852,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/13831\/revisions\/13852"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media\/13845"}],"wp:attachment":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media?parent=13831"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/categories?post=13831"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/tags?post=13831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}