【发布时间】:2020-04-09 21:08:24
【问题描述】:
我只是想知道如何使用一个选择来评估动态 SQL 的内容;这就是例子。这只是一个例子。但我想要动态函数,并使用单选进行管理。 (我知道 sqls 只用于 SELECT 而不是修改......但在这个深度查询者中,我正在成为一个疯狂的开发人员)
SELECT 'SELECT SETVAL(' || chr(39) || c.relname || chr(39)|| ' ,
(SELECT MAX(Id)+1 FROM ' || regexp_replace(c.relname, '_[a-zA-Z]+_[a-zA-Z]+(_[a-zA-Z0-9]+)?', '', 'g') ||' ), true );'
FROM pg_class c WHERE c.relkind = 'S';
原来的输出是:
SELECT SETVAL('viewitem_id_seq' , (SELECT MAX(Id)+1 FROM viewitem ), true );
SELECT SETVAL('userform_id_seq' , (SELECT MAX(Id)+1 FROM userform ), true );
这是动态句: (SELECT MAX(Id)+1 FROM ' || regexp_replace(c.relname, '[a-zA-Z]+[a-zA-Z]+(_[a-zA-Z0 -9]+)?', '', 'g')
是一个生成SQL输出的字符串,如何在该语句的同一行进行eval?
想要的输出是:
SELECT SETVAL('viewitem_id_seq' , 25, true );
SELECT SETVAL('userform_id_seq' , 85, true );
谢谢!
【问题讨论】:
-
为什么需要是单个查询?
-
因为我需要创建一个动态语句来影响原始语句以执行嵌套连接或子选择。
标签: regex postgresql dynamic-sql