1execute sp_executesql N'select 1 as val'
而在PostgreSQL中,就不要有此想法了。当然,SQL Server的这种动态SQL语句的执行方法也有其局限与不便的地方。
在PL/pgSQL中,执行动态SQL的格式如下(摘录自说明文档):
1EXECUTE command-string [ INTO [STRICT] target ] [ USING expression [, ] ];
其中,
command-string就是要执行的动态SQL语句(一定要记住:这里是SQL语句,不是PL/pgSQL语句,像raise notice就不能使用);
INTO子句是把SQL查询到的值赋给INTO指定的变量;
USING子句是前面的command-string中替代变量($1, $2, )的赋值;
示例:
123456789do $$declarev_c1 integer;v_c2 integer;beginexecute 'select count() as c1, count() as c2 from (select 1 as idx union select 11 as idx union select 21 as idx) s where idx > $1' into v_c1, v_c2using 10;raise notice '%, %', v_c1, v_c2;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)