{"version":"1.0","provider_name":"Philipp Salvisberg&#039;s Blog","provider_url":"https:\/\/www.salvis.com\/blog","author_name":"Philipp Salvisberg","author_url":"https:\/\/www.salvis.com\/blog\/author\/phs\/","title":"Constants vs. Parameterless Functions - Philipp Salvisberg&#039;s Blog","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"JQdAAvrPpl\"><a href=\"https:\/\/www.salvis.com\/blog\/2019\/12\/13\/constants-vs-parameterless-functions\/\">Constants vs. Parameterless Functions<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/www.salvis.com\/blog\/2019\/12\/13\/constants-vs-parameterless-functions\/embed\/#?secret=JQdAAvrPpl\" width=\"600\" height=\"338\" title=\"&#8220;Constants vs. Parameterless Functions&#8221; &#8212; Philipp Salvisberg&#039;s Blog\" data-secret=\"JQdAAvrPpl\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script type=\"text\/javascript\">\n\/* <![CDATA[ *\/\n\/*! This file is auto-generated *\/\n!function(d,l){\"use strict\";l.querySelector&&d.addEventListener&&\"undefined\"!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!\/[^a-zA-Z0-9]\/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret=\"'+t.secret+'\"]'),o=l.querySelectorAll('blockquote[data-secret=\"'+t.secret+'\"]'),c=new RegExp(\"^https?:$\",\"i\"),i=0;i<o.length;i++)o[i].style.display=\"none\";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute(\"style\"),\"height\"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):\"link\"===t.message&&(r=new URL(s.getAttribute(\"src\")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener(\"message\",d.wp.receiveEmbedMessage,!1),l.addEventListener(\"DOMContentLoaded\",function(){for(var e,t,s=l.querySelectorAll(\"iframe.wp-embedded-content\"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute(\"data-secret\"))||(t=Math.random().toString(36).substring(2,12),e.src+=\"#?secret=\"+t,e.setAttribute(\"data-secret\",t)),e.contentWindow.postMessage({message:\"ready\",secret:t},\"*\")},!1)))}(window,document);\n\/\/# sourceURL=https:\/\/www.salvis.com\/blog\/wp-includes\/js\/wp-embed.min.js\n\/* ]]> *\/\n<\/script>\n","thumbnail_url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2019\/12\/bad_execution_plan.png","thumbnail_width":686,"thumbnail_height":360,"description":"Parameterless functions are a way to use constants in SQL outside of PL\/SQL, for example in views. However, they rob the optimizer of the capability to use histograms and therefore finding an optimal execution plan. Actually we can only work around the problem. The Oracle Database has to provide the solution. Either by allowing to access package global constants in SQL (outside of PL\/SQL) or by implementing some kind of peeking for parameterless, deterministic functions."}