My question is this:
Here’s what I mean. First, something that works (using PG Version 14.1): create procedure p_plpgsql() security definer language plpgsql as $body$ begin drop table if exists t cascade; create table t(k serial primary key, v text not null); end; $body$; I can transform this trivially to an anonymous block: do language plpgsql $body$ begin drop table if exists t cascade; create table t(k serial primary key, v text not null); end; $body$; I can also transform the procedure trivially to "language sql”: security definer language sql as $body$ drop table if exists t cascade; create table t(k serial primary key, v text not null); $body$; But trying the corresponding “language sql” anonymous block: do language sql $body$ begin drop table if exists t cascade; create table t(k serial primary key, v text not null); end; $body$; Causes this error: 0A000 (feature_not_supported): language "sql" does not support inline code execution |