postgresql – plpgsql中的动态变量名(字符串到变量名)

postgresql – plpgsql中的动态变量名(字符串到变量名),第1张

概述有没有办法动态使用变量名称,我的意思是将其组成一个字符串,然后使用它. 请不要告诉我使用数组,我所示的例子只是简化以获得更好的图片. do $$declare var1 int:=1; var2 int:=2; var3 int:=3; i int; begin raise notice 'Variable x %' , var1; raise notice 有没有办法动态使用变量名称,我的意思是将其组成一个字符串,然后使用它.

请不要告诉我使用数组,我所示的例子只是简化以获得更好的图片.

do $$declare   var1 int:=1;   var2 int:=2;   var3 int:=3;    i int; begin  raise notice 'Variable x %',var1;   raise notice 'Variable x %',var2;   raise notice 'Variable x %',var3;   for i in 1..3 loop raise     notice 'Variable x %','var' || i;   end loop; end $$ResultNOTICE:  Variable x 1NOTICE:  Variable x 2NOTICE:  Variable x 3NOTICE:  Variable x var1NOTICE:  Variable x var2NOTICE:  Variable x var3

所以我需要这样的东西,除了结果应该是数字而不是字符串变量x var1而变量x 1

并且执行也不起作用

do $$declare   var1 text = 'car';   var2 text = 'truck';   var3 text = 'boat';   code text ; begin   for i in 1..3 loop     code  = 'Insert into My_table values (' || i || ',' || 'var' || i || ');';     execute   code;  end loop; end $$ERROR:  column "var1" does not existliNE 1: Insert into My_table values (1,var1);

任何想法如何动态组成变量名称,正如我所说的那些例子很简单,只是为了表明我的观点.我需要在变量中更改多个数字,因此数组不适合我.

解决方法 您可以执行以下 *** 作,但如果要创建的变量超过16,000个,请务必小心:

$BODY$declaresql_text text;_ptc int;beginsql_text = 'create table <schema>.<table> as     select ID,process_date ' ;for _ptc in select distinct(preferred_term_code) from <schema>.<table> order by 1loop sql_text = sql_text || ',case when preferred_term_code = '||_ptc||' then 1 else 0 end as ptc_'||_ptc|| ' ';raise notice '_ptc: %',_ptc;end loop;sql_text = sql_text || ' from <schema>.<table>;';execute sql_text;grant select on <chema>.<table> to public;raise notice 'Checks in the mail!';end;$BODY$
总结

以上是内存溢出为你收集整理的postgresql – plpgsql中的动态变量名(字符串到变量名)全部内容,希望文章能够帮你解决postgresql – plpgsql中的动态变量名(字符串到变量名)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1158072.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存