请不要告诉我使用数组,我所示的例子只是简化以获得更好的图片.
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中的动态变量名(字符串到变量名)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)