min*_*hee 13 sql postgresql select eval
我想这样做:
SELECT (EVAL 'SELECT 1') + 1;
Run Code Online (Sandbox Code Playgroud)
EVAL在PostgreSQL中有没有办法像这样做?
a_h*_*ame 18
如果您尝试"eval"的语句始终返回相同的数据类型,则可以编写一个使用Grzegorz提到的EXECUTE的eval()函数.
create or replace function eval(expression text) returns integer
as
$body$
declare
result integer;
begin
execute expression into result;
return result;
end;
$body$
language plpgsql
Run Code Online (Sandbox Code Playgroud)
然后你可以做类似的事情
SELECT eval('select 41') + 1;
Run Code Online (Sandbox Code Playgroud)
但是,如果动态语句为要评估的每个表达式返回不同的内容,则此方法将不起作用.
还要记住,通过运行任意语句会带来巨大的安全风险.如果这是一个问题取决于您的环境.如果仅在交互式SQL会话中使用,那么这不是问题.
| 归档时间: |
|
| 查看次数: |
28278 次 |
| 最近记录: |