plpgsql $[position] 是相对的?
plpgsql $[position] is relative?
create or replace function exc_using(int, text) returns int as
$$
declare i int;
begin
for i in execute 'select * from generate_series(1,) ' using +1 loop
raise notice '% ', i;
raise notice 'i + i *3: % ', i + i * 3;
end loop;
execute 'select + * 3 + length() '
into i using , ;
return i;
end
$$
language plpgsql;
好像是A
execute 'select + * 3 + length() '
into i using , ;
return i;
等同于:
B
execute 'select + * 3 + length() '
into i using , ;
return i;
我的看法是 $2 绝对引用数据类型为文本的函数第二个参数。但似乎 plpgsql $[position] 是相对的。但是我无法获得此边缘情况的手动参考。
当然是相对的。他们还会是什么?但它们与什么有关?
在EXECUTE 字符串中,$1 和$2 是相对于USING 的。在外面,它们是相对于函数参数的。
create or replace function exc_using(int, text) returns int as
$$
declare i int;
begin
for i in execute 'select * from generate_series(1,) ' using +1 loop
raise notice '% ', i;
raise notice 'i + i *3: % ', i + i * 3;
end loop;
execute 'select + * 3 + length() '
into i using , ;
return i;
end
$$
language plpgsql;
好像是A
execute 'select + * 3 + length() '
into i using , ;
return i;
等同于: B
execute 'select + * 3 + length() '
into i using , ;
return i;
我的看法是 $2 绝对引用数据类型为文本的函数第二个参数。但似乎 plpgsql $[position] 是相对的。但是我无法获得此边缘情况的手动参考。
当然是相对的。他们还会是什么?但它们与什么有关?
在EXECUTE 字符串中,$1 和$2 是相对于USING 的。在外面,它们是相对于函数参数的。