{"id":15240,"date":"2020-11-22T19:40:13","date_gmt":"2020-11-22T18:40:13","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/"},"modified":"2020-11-22T19:40:13","modified_gmt":"2020-11-22T18:40:13","slug":"will-postgresql14-finally-come-with-schema-variables","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/","title":{"rendered":"Will PostgreSQL14 finally come with schema variables?"},"content":{"rendered":"<p>One of the bits you need to solve when you migrate from Oracle to PostgreSQL is this: In the Oracle database there are PL\/SQL packages and some of those have package variables defined. PostgreSQL does not know the concept of a package but you can use schemas to group your PL\/pgSQL functions and procedures. When it comes to packages variables there is no easy solution currently. <\/p>\n<blockquote class=\"twitter-tweet\">\n<p lang=\"en\" dir=\"ltr\">Tip: You can add your own parameters in <a href=\"https:\/\/twitter.com\/hashtag\/postgresql?src=hash&amp;ref_src=twsrc%5Etfw\">#postgresql<\/a> <a href=\"https:\/\/t.co\/sdaOMStqqU\">pic.twitter.com\/sdaOMStqqU<\/a><\/p>\n<p>&mdash; Daniel Westermann (@westermanndanie) <a href=\"https:\/\/twitter.com\/westermanndanie\/status\/1291615108452560896?ref_src=twsrc%5Etfw\">August 7, 2020<\/a><\/p><\/blockquote>\n<p> to emulate that, but it is nasty and not the intended use case for this. Schema variables are under discussion for quite some time and the good news is, that <a href=\"https:\/\/commitfest.postgresql.org\/30\/1608\/\" target=\"_blank\" rel=\"noopener noreferrer\">the patch is now &#8220;Ready for Committer&#8221;<\/a>. This still is not a guarantee that PostgreSQL 14 will come with schema variables, but at least it is close to that.<\/p>\n<p><!--more--><\/p>\n<p>As always, lets do some simple demos to understand what is going on and how the feature might help, once it is committed. The most simple example for a schema variable is this:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create variable var1 as int;\nCREATE VARIABLE\n<\/pre>\n<p>As the name of the feature (schema variables) implies, a variable is created in a specific schema. As I have not modified the default <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/ddl-schemas.html#DDL-SCHEMAS-PATH\" target=\"_blank\" rel=\"noopener noreferrer\">search_path<\/a> the variable got created in the public schema. You can easily check this in the new catalog table pg_variable:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# select varname, varnamespace::regnamespace from pg_variable;\n varname | varnamespace \n---------+--------------\n var1    | public\n(1 row)\n<\/pre>\n<p>By default, once a variable is created, it is persistent and available again after the instance is restarted:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# ! pg_ctl restart\nwaiting for server to shut down.... done\nserver stopped\nwaiting for server to start....2020-11-19 01:29:48.825 CET - 1 - 80179 -  - @ LOG:  redirecting log output to logging collector process\n2020-11-19 01:29:48.825 CET - 2 - 80179 -  - @ HINT:  Future log output will appear in directory \"pg_log\".\n done\nserver started\npostgres=# select 1;\nFATAL:  terminating connection due to administrator command\nserver closed the connection unexpectedly\n        This probably means the server terminated abnormally\n        before or while processing the request.\nThe connection to the server was lost. Attempting reset: Succeeded.\npostgres=# select var1;\n var1 \n------\n     \n(1 row)\n<\/pre>\n<p>Until now the variable does not contain any value, as we did not assign anything. To do that you can use &#8220;let&#8221;:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# h let\nCommand:     LET\nDescription: change a schema variable's value\nSyntax:\nLET schema_variable = sql_expression\nLET schema_variable = DEFAULT\n\nURL: https:\/\/www.postgresql.org\/docs\/devel\/sql-let.html\n<\/pre>\n<p>Assigning a value can be as simple as this:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# let var1 = 1;\nLET\npostgres=# select var1;\n var1 \n------\n    1\n(1 row)\n<\/pre>\n<p>.. or you can calculate the new value:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# let var1 = var1 * 2;\nLET\npostgres=# select var1;\n var1 \n------\n    2\n(1 row)\n<\/pre>\n<p>The value, a variable has assigned to, is not persistent, it lives only for the duration of the session:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# ! pg_ctl restart\nwaiting for server to shut down.... done\nserver stopped\nwaiting for server to start....2020-11-19 01:44:42.837 CET - 1 - 80305 -  - @ LOG:  redirecting log output to logging collector process\n2020-11-19 01:44:42.837 CET - 2 - 80305 -  - @ HINT:  Future log output will appear in directory \"pg_log\".\n done\nserver started\npostgres=# select 1;\nFATAL:  terminating connection due to administrator command\nserver closed the connection unexpectedly\n        This probably means the server terminated abnormally\n        before or while processing the request.\nThe connection to the server was lost. Attempting reset: Succeeded.\npostgres=# select var1;\n var1 \n------\n     \n(1 row)\n<\/pre>\n<p>If you want to have the value of a variable persistent you need to make it immutable:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create immutable variable var2 as int default 2;\nCREATE VARIABLE\npostgres=# select var2;\n var2 \n------\n    2\n(1 row)\n\npostgres=# ! pg_ctl restart\nwaiting for server to shut down.... done\nserver stopped\nwaiting for server to start....2020-11-19 01:58:53.365 CET - 1 - 80414 -  - @ LOG:  redirecting log output to logging collector process\n2020-11-19 01:58:53.365 CET - 2 - 80414 -  - @ HINT:  Future log output will appear in directory \"pg_log\".\n done\nserver started\npostgres=# select 1;\nFATAL:  terminating connection due to administrator command\nserver closed the connection unexpectedly\n        This probably means the server terminated abnormally\n        before or while processing the request.\nThe connection to the server was lost. Attempting reset: Succeeded.\npostgres=# select var2;\n var2 \n------\n    2\n(1 row)\n<\/pre>\n<p>Important to understand is, that variables are not transaction safe by default:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create variable var3 as int default 3;\nCREATE VARIABLE \npostgres=# select var3;\n var3 \n------\n    3\n(1 row)\n\npostgres=# begin;\nBEGIN\npostgres=*# let var3=4;\nLET\npostgres=*# rollback;\nROLLBACK\npostgres=# select var3;\n var3 \n------\n    4\n(1 row)\n<\/pre>\n<p>But you can do it, if you want:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create variable var4 as int default 5 on transaction end reset;\nCREATE VARIABLE\npostgres=# begin;\nBEGIN\npostgres=*# let var4 = 10;\nLET\npostgres=*# select var4;\n var4 \n------\n   10\n(1 row)\n\npostgres=*# rollback;\nROLLBACK\npostgres=# select var4;\n var4 \n------\n    5\n(1 row)\n<\/pre>\n<p>Like tables, variables can also be temporary:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create temporary variable var6 as int default -1;\nCREATE VARIABLE\npostgres=# ! pg_ctl restart\nwaiting for server to shut down.... done\nserver stopped\nwaiting for server to start....2020-11-19 02:22:22.308 CET - 1 - 80611 -  - @ LOG:  redirecting log output to logging collector process\n2020-11-19 02:22:22.308 CET - 2 - 80611 -  - @ HINT:  Future log output will appear in directory \"pg_log\".\n done\nserver started\npostgres=# select 1;\nFATAL:  terminating connection due to administrator command\nserver closed the connection unexpectedly\n        This probably means the server terminated abnormally\n        before or while processing the request.\nThe connection to the server was lost. Attempting reset: Succeeded.\npostgres=# select var6;\nERROR:  column \"var6\" does not exist\nLINE 1: select var6;\n               ^\npostgres=# \n<\/pre>\n<p>&#8230; and you can also specify to drop the variable at commit time:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# begin;\nBEGIN\npostgres=*# create temporary variable var7 as int default -1 on commit drop;\nCREATE VARIABLE\npostgres=*# let var7 = -9;\nLET\npostgres=*# commit;\nCOMMIT\npostgres=# select var7;\nERROR:  column \"var7\" does not exist\nLINE 1: select var7;\n               ^\npostgres=# \n<\/pre>\n<p>Variables can be referenced in procedures, functions and in SQL:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create variable var8 as int default 100;\nCREATE VARIABLE\npostgres=# create variable var8 as int default 100;\nCREATE VARIABLE\npostgres=# create function f1() returns int as $$select var8;$$ language SQL;\nCREATE FUNCTION\npostgres=# select f1();\n f1  \n-----\n 100\n(1 row)\n\npostgres=# create procedure p1() as $$\npostgres$# declare\npostgres$# begin\npostgres$#   let var8 = 101;\npostgres$#   raise notice '%', var8;\npostgres$# end;\npostgres$# $$ language plpgsql;\nCREATE PROCEDURE\npostgres=# call p1();\nNOTICE:  101\nCALL\n\npostgres=# create table t1 ( a int, b text );\nCREATE TABLE\npostgres=# select var8;\n var8 \n------\n  101\n(1 row)\n\npostgres=# insert into t1 values (101,'aaa');\nINSERT 0 1\npostgres=# select * from t1 where a = var8;\n  a  |  b  \n-----+-----\n 101 | aaa\n(1 row)\n<\/pre>\n<p>This is really a great feature and I do hope it finally gets committed for PostgreSQL 14.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the bits you need to solve when you migrate from Oracle to PostgreSQL is this: In the Oracle database there are PL\/SQL packages and some of those have package variables defined. PostgreSQL does not know the concept of a package but you can use schemas to group your PL\/pgSQL functions and procedures. When [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[77],"type_dbi":[],"class_list":["post-15240","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","tag-postgresql"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.8 (Yoast SEO v28.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Will PostgreSQL14 finally come with schema variables? - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Will PostgreSQL14 finally come with schema variables?\" \/>\n<meta property=\"og:description\" content=\"One of the bits you need to solve when you migrate from Oracle to PostgreSQL is this: In the Oracle database there are PL\/SQL packages and some of those have package variables defined. PostgreSQL does not know the concept of a package but you can use schemas to group your PL\/pgSQL functions and procedures. When [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-11-22T18:40:13+00:00\" \/>\n<meta name=\"author\" content=\"Open source Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Open source Team\" \/>\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.dbi-services.com\\\/blog\\\/will-postgresql14-finally-come-with-schema-variables\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/will-postgresql14-finally-come-with-schema-variables\\\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4bae5e5dd8c7d48edbd948772b49b202\"},\"headline\":\"Will PostgreSQL14 finally come with schema variables?\",\"datePublished\":\"2020-11-22T18:40:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/will-postgresql14-finally-come-with-schema-variables\\\/\"},\"wordCount\":387,\"commentCount\":0,\"keywords\":[\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/will-postgresql14-finally-come-with-schema-variables\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/will-postgresql14-finally-come-with-schema-variables\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/will-postgresql14-finally-come-with-schema-variables\\\/\",\"name\":\"Will PostgreSQL14 finally come with schema variables? - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2020-11-22T18:40:13+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4bae5e5dd8c7d48edbd948772b49b202\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/will-postgresql14-finally-come-with-schema-variables\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/will-postgresql14-finally-come-with-schema-variables\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/will-postgresql14-finally-come-with-schema-variables\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Will PostgreSQL14 finally come with schema variables?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4bae5e5dd8c7d48edbd948772b49b202\",\"name\":\"Open source Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"caption\":\"Open source Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/open-source-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Will PostgreSQL14 finally come with schema variables? - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/","og_locale":"en_US","og_type":"article","og_title":"Will PostgreSQL14 finally come with schema variables?","og_description":"One of the bits you need to solve when you migrate from Oracle to PostgreSQL is this: In the Oracle database there are PL\/SQL packages and some of those have package variables defined. PostgreSQL does not know the concept of a package but you can use schemas to group your PL\/pgSQL functions and procedures. When [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/","og_site_name":"dbi Blog","article_published_time":"2020-11-22T18:40:13+00:00","author":"Open source Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Open source Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4bae5e5dd8c7d48edbd948772b49b202"},"headline":"Will PostgreSQL14 finally come with schema variables?","datePublished":"2020-11-22T18:40:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/"},"wordCount":387,"commentCount":0,"keywords":["PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/","url":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/","name":"Will PostgreSQL14 finally come with schema variables? - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2020-11-22T18:40:13+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4bae5e5dd8c7d48edbd948772b49b202"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Will PostgreSQL14 finally come with schema variables?"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4bae5e5dd8c7d48edbd948772b49b202","name":"Open source Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","caption":"Open source Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/open-source-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/15240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=15240"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/15240\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=15240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=15240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=15240"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=15240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}