0
我有表“Table1”和SQL过程“testProc”,它接受类型“Table1”的参数。当这个过程被调用像这样:postgresql如何在内部将行类型变量传递给过程?
select testProc(t.*) from Table1 t;
是PostgreSQL内部使用指针传递该参数?或者它被复制到每一行的内存中?
谢谢!
我有表“Table1”和SQL过程“testProc”,它接受类型“Table1”的参数。当这个过程被调用像这样:postgresql如何在内部将行类型变量传递给过程?
select testProc(t.*) from Table1 t;
是PostgreSQL内部使用指针传递该参数?或者它被复制到每一行的内存中?
谢谢!
这里有两个不同的情况,一个必须涉及一个副本,第二个必须涉及指针。
在这种情况下,你提到了一个副本。你可以这样测试:
create function test_test(inout test test) returns test as
$$
begin
$1.test := $1.test + 1;
return;
end;
$$ language plpgsql;
select (test_test(t)).test, (test_test(t)).test from test t;
其中test.test是一个整数。数字将是相同的。
第二个是触发器,其中修改NEW将传递给下一个触发器。这些必须通过引用传递。
非常感谢! – JoshuaBoshi 2013-03-14 12:42:11